VS2017+Qt设置模态/非模态对话框

1.重新添加一个类myDialog,ui作为新的对话框
右键项目——添加——Add Qt Class——Qt Widget Class
2.添加的类是继承于QWidget,修改myDialog.h和myDialog.cpp。

myDialog.h

#include "ui_myDialog.h"
#include<QDialog>
class myDialog : public QDialog//此处由QWidget修改为QDialog
{
	Q_OBJECT

public:
	myDialog(QWidget *parent = Q_NULLPTR);
	~myDialog();

private:
	Ui::myDialog ui;
};

myDialog.cpp

myDialog::myDialog(QWidget *parent)
	: QDialog(parent)此处由QWidget修改为QDialog
{
	ui.setupUi(this);
}

显示对话框的槽函数如下:

void study_mainWin::on_pushButton_clicked() {

	myDialog *dialog = new myDialog();

	dialog->exec();	//如果是myDialod继承于QDialog,则使用该方法显示模态窗口								
	//dialog->show(); //如果是myDialod继承于QDialog,则使用该方法设置非模态窗口
}

如果不进行第二步的修改(由QWidget修改为QDialog),则myDialog是继承于QWidget,在QWidget类中显示模态窗口与QDialog类中显示模态窗口方法不同。

如果myDialog继承与QWidget,则显示对话框的槽函数如下:

void study_mainWin::on_pushButton_clicked() {

	myDialog *dialog = new myDialog();
	dialog->setWindowModality(Qt::ApplicationModal);   //如果是myDialod继承于QWidget,则使用该方法设置对话框为模态窗口
    dialog->show();									 //setWindowModality()的参数设置要阻塞的窗口类型 
													 //Qt::NonModal 不阻塞
													 //Qt::WindowModal 阻塞父窗口,所有祖先窗口及其子窗口
													 //Qt::ApplicationModal 阻塞整个应用程序


}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值