天天看點

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();
}
           

繼續閱讀