Qt模态和非模态对话框
所谓模态对话框
就是在其没有被关闭之前,用户不能与同一个应用程序的其他窗口进行交互,直到该对话框关闭。对于非模态对话框
,当被打开时,用户既可选择和该对话框进行交互,也可以选择同应用程序的其他窗***互。
这连个概念并不是Qt独有的,MFC也有,可以参考此文。【MFC模态和非模态对话框】
1. 非模态对话框
QDialog* dlg = new QDialog(this);
dlg->show();
说明:QDialog* dlg 定义了一个指向QDialog类对象的指针变量
2. 模态对话框
方法1
QDialog* dlg= new QDialog();
dlg->setModal(true);
dlg->show();
方法2
QDialog* dlg = new QDialog(this);
dlg.exec();
实战演练
建立Dialog项目,在dialog.h中添加
public slots:
void modalfun();
void modelessfun();
dialog.cpp如下:
#include "dialog.h"
#include "ui_dialog.h"
#include<ctime>
#include<cstdlib>
#include<QDebug>
Dialog::Dialog(QWidget *parent) ://初始化列表;单继承的模式
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);//表示为现在这个类所代表的对话框创建界面
connect(ui->Modalbtn, &QPushButton::clicked, this, &Dialog::modalfun);
connect(ui->Modelessbtn, &QPushButton::clicked, this, &Dialog::modelessfun);
}
Dialog::~Dialog()
{
delete ui;
}
//模态对话框
void Dialog::modalfun()
{
QDialog* dlg = new QDialog(this);
dlg->setModal(true);
dlg->show();
}
//非模态对话框
void Dialog::modelessfun()
{
QDialog* dlg = new QDialog(this);
dlg->show();
}