天天看点

Qt 模态对话框 非模态对话框

qt  学习第一天:  总结

使用qt第一天,感觉开发起来还是很舒服的,每天记录学习到的一点东西,虽说和工作上的不太相关,但是希望自己能坚持下来。

qt编写对话框程序的一些特点:

1.创建并初始化窗口部件

2.将部件窗口添加到布局管理器中

3.建立信号槽的连接

3.实现对话框中的自定义槽

模态对话框就是没有关闭它之前,不能与应用程序的其他窗口交互。

非模态对话框就是既可以与它交互,也可以与应用程序的其他窗口交互。

在MainWindow的构造函数中,创建一个模态窗口

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
     QDialog *pDlg=new QDialog(this);
    //pDlg->setModal(1);
    pDlg->setWindowModality(Qt::ApplicationModal);
    pDlg->show();
}
           
Qt::ApplicationModal 阻塞应用程序的所有窗口      
Qt::WindowModal 阻塞本窗口的父窗口以及父窗口的所有子窗口。      
Qt::NonModal   不阻塞任何窗口,即非模态窗口      
setModal(1);相当于        
Qt::ApplicationModal       

上面的代码与下面的代码,都是创建模态窗口,但是效果是不同的,上面的代码,在show()函数执行之后,将控制权交还给调用者,MainWindow 窗口也被显示了出来。

而下面的代码,exec()之后,只有当pDlg的窗口被关闭,程序才能接着向下执行。

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QDialog *pDlg=new QDialog(this);
    dlg.exec();
}
           

继续阅读