`
mylove2060
  • 浏览: 335992 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

QT-锁定对话框固定不能拉伸和定位并且不能关闭

阅读更多

Author:QQ174554431

//lockwindow.h
#ifndef LOCKWINDOW_H
#define LOCKWINDOW_H

#include <QtGui/QPushButton>
#include <QtGui/QDialog>
#include <QtGui/QHBoxLayout>
#include <QEvent>
#include <QResizeEvent>

class LockWindow : public QDialog
{
	Q_OBJECT

public:
	LockWindow(QWidget *parent = 0, Qt::WFlags flags = 0);
	~LockWindow();

protected:
	void moveEvent(QMoveEvent* pEvent );
	void closeEvent ( QCloseEvent * event ) ;
public slots:
	void OnButtonLockWindow();
private:
	bool isLocked;
	QPushButton *lockButton;
	QHBoxLayout *hBoxLayout;

	QRect  m_LockedRect;
	Qt::WindowFlags m_windowsFlags;
	

};

#endif // LOCKWINDOW_H



//lockwindow.cpp

#include "lockwindow.h"

LockWindow::LockWindow(QWidget *parent, Qt::WFlags flags)
	: QDialog(parent, flags)
{
	isLocked = false;
	lockButton = new QPushButton();
	lockButton->setText(tr("Lock"));
	lockButton->setFixedSize(100,30);
	resize(600, 400);
	hBoxLayout = new QHBoxLayout(this);
	hBoxLayout->addWidget(lockButton);
	setMinimumSize(300,200);
	setMaximumSize(900,600);
	m_windowsFlags = windowFlags();
	setLayout(hBoxLayout);
	connect(lockButton,SIGNAL(clicked()),this,SLOT(OnButtonLockWindow()));
}


LockWindow::~LockWindow()
{

}

void LockWindow::OnButtonLockWindow()
{	
	if(isLocked)
	{
		lockButton->setText("Lock");	
		setWindowFlags(m_windowsFlags|Qt::WindowStaysOnTopHint);
		//or setWindowFlags(windowFlags()&(~Qt::MSWindowsFixedSizeDialogHint));  
		show();
	}
	else
	{	
		lockButton->setText("UnLock");
		setWindowFlags(m_windowsFlags|Qt::MSWindowsFixedSizeDialogHint |Qt::WindowStaysOnTopHint);
		//or setWindowFlags(windowFlags()|Qt::MSWindowsFixedSizeDialogHint|Qt::WindowStaysOnTopHint); 
		show();
		m_LockedRect =  this->geometry();
	}
	isLocked = !isLocked;
}

void LockWindow::moveEvent( QMoveEvent* pEvent )
{
	if(isLocked)
	{
		this->setGeometry(m_LockedRect);
	}

	QDialog::moveEvent(pEvent);
}

void LockWindow::closeEvent ( QCloseEvent * cEvent )
{
	if(isLocked)
	{
		cEvent->ignore();
	}
	else
	{
		QDialog::closeEvent(cEvent);
	}
}





//main.cpp
#include "lockwindow.h"
#include <QtGui/QApplication>

int main(int argc, char *argv[])
{
	QApplication a(argc, argv);
	LockWindow w;
	w.show();
	return a.exec();
}



分享到:
评论

相关推荐

    Qt -- 对话框

    总之,Qt对话框是构建用户友好界面的关键组件,理解和熟练运用对话框能极大地提升应用的用户体验。通过阅读博客和分析提供的`ExtensionDlg`源码,我们可以深入学习如何在Qt中有效地使用和扩展对话框功能。

    QT-悬浮对话框

    通过PPT教程和代码实践,学习者将能够掌握在QT环境中创建具有悬浮和动态移动功能的对话框,提升其在GUI编程中的技能。在实际应用中,悬浮对话框常用于提示信息、快捷操作或工具提示等场景,能够增强用户体验,使用户...

    QT--标准对话框代码

    QT是一种流行的开源跨平台应用程序...此外,自定义对话框的实现能帮助我们理解如何扩展QT的基本组件以满足特定需求。对于QT开发者来说,掌握这些知识是至关重要的,因为它们是创建用户友好且功能丰富的应用程序的基础。

    Qt 源代码 - 04 对话框(三)

    同时,Qt的信号和槽机制使我们能方便地连接对话框中的按钮和其他控件,实现复杂的逻辑。 在提供的源代码"05-standardDialog"中,你可以看到关于如何实例化和使用这些标准对话框的具体实现。通过阅读和理解这段代码...

    C++GuiQt4编程-创建对话框实例

    C++GuiQt4编程-创建对话框实例: #include "finddialog.h" #include int main(int argc, char *argv[]) { QApplication a(argc, argv); FindDialog w; w.show(); return a.exec&#40;&#41;; }

    Qt-自定义对话框实现对主窗口数据的实时画图

    该文件夹创建了一个项目,利用定时器定时更新Widget的坐标条形框数据,点击Widget按钮可弹出一个非模态对话框,该对话框可实现对Widget窗口的坐标数据进行实时画图。

    Qt 文件选择对话框

    在Qt编程环境中,`QFileDialog`是一个非常重要的类,它为用户提供了一种标准的方式来与操作系统交互,以便打开、保存或选择多个文件。本篇将详细阐述`QFileDialog`的使用,特别是关于多选文件的功能。 首先,让我们...

    qt-solutions-qt-solutions

    从Qt官网上下载的Qt的解决方案资料库(Qt Solutions Archive) http://qt.nokia.com/products/qt-addons/solutions-archive/ 有JPEG2000的,有Windows中Services的,有浏览器插件的,有单应用程序的,有SOAP的,有...

    创建模态对话框--对话框

    这意味着用户不能访问父窗口或其他应用程序窗口,直到他们完成对话框中的操作并关闭它。这种特性使得模态对话框在需要用户输入关键信息或者进行确认操作的场景下非常有用。 创建模态对话框通常涉及以下几个步骤: ...

    qt-material-widgets-master

    "qt-material-widgets-master" 是一个基于Qt框架的用户界面(UI)开发项目,它提供了Material Design风格的控件库。这个库使得Qt开发者能够轻松地在他们的应用中实现Google的Material Design设计规范,从而获得现代...

    Qt 源代码 - 02 对话框

    在Qt框架中,对话框(Dialog)是一种特殊的窗口,用于与用户进行临时交互,通常用于显示警告、询问信息或接收用户的输入。对话框通常有一个确定(OK)按钮和一个取消(Cancel)按钮,但也可以根据需求包含其他控件,...

    qt退出对话框

    通过以上步骤,我们就能在Qt中创建一个具有退出对话框的应用程序。理解并熟练运用信号与槽机制是Qt编程的关键,它使得事件处理变得简单而直观。在实际开发中,根据需求可以对对话框进行更复杂的设计和定制,例如添加...

    qt-opensource-linux-x64-5.9.1.rar

    此外,QT支持多种编程语言,包括C++和QML,使得不同背景的开发者都能轻松上手。5.9.1版本在性能和稳定性方面都有所提升,同时也添加了一些新的特性和API,为开发者带来了更多的可能性。 对于Linux系统,尤其是中标...

    qt-eclipse-integration-win32-1.6.1.rar

    描述中提到,“win上eclipse集成Qt的插件程序,linux的Qt上已经有了,win上的几个好像都不能安装成功。”这表明在Windows平台上,找到一个能够顺利安装并运行的Qt-Eclipse集成插件是具有挑战性的。开发者可能已经...

    qt-vsaddin-msvc2017 插件下载

    1. **项目创建与管理**:该插件支持创建新的Qt项目,并且可以管理Qt项目的依赖关系,使得设置和更新Qt库变得简单易行。 2. **源代码编辑器增强**:提供Qt特定的代码补全、语法高亮和错误检查,提升开发效率。例如,...

    qt-opensource-windows-x86-5.14.2

    这个版本是针对32位Windows操作系统设计的,并且是基于GPLv3许可的,意味着它允许自由使用、修改和分发源代码。 Qt库是一个C++框架,提供了一系列丰富的API,涵盖了图形绘制、网络通信、数据库接口、多媒体支持、...

    qt 内建对话框

    总之,Qt内建对话框是构建GUI应用程序不可或缺的部分,它们简化了常用功能的实现,提高了用户体验。理解并熟练运用这些对话框,将有助于开发出更加高效、易用的应用程序。在实际编码过程中,根据项目需求灵活选择和...

    qt-faststart

    对于那些希望提升用户观看体验,尤其是对于需要实时性和流畅性的直播服务,使用qt-faststart进行元数据前置处理是必不可少的一环。同时,掌握FFmpeg的其他功能也能够帮助我们更好地管理和操纵多媒体内容,满足各种...

    Qt无边框对话框实现

    这里的`Qt::FramelessWindowHint`标志使得窗口无边框,而`Qt::WindowSystemMenuHint`则保留了系统菜单栏,如最小化、最大化和关闭按钮。 接下来,我们需要处理鼠标事件来实现拖拽移动和四边拖动大小调整。在对话...

    Qt 源代码 - 03 对话框(二)

    在本节中,我们将深入探讨Qt库中的对话框机制,特别是在源代码层面的理解。"03 对话框(二)"的源代码示例是Qt编程中的一个重要部分,它涉及到用户界面交互的关键元素——对话框。Qt是一个跨平台的C++图形用户界面应用...

Global site tag (gtag.js) - Google Analytics