按照運行對話框時是否還能夠和該程序的其餘窗口進行交互,將對話框常分爲兩類:模態(modal)和非模態(modeless)。less
模態對話框就是沒有關閉它以前,不能與同一應用程序的其餘窗口進行交互。函數
建立模態對話框--1:this
QDialog dialog(this); dialog.exec();
執行這個代碼後,先彈出這個對話框,可是原來的窗口並無出來,關閉這個對話框後,原來的對話框才彈出來。spa
建立模態對話框--2:code
QDialog *dialog = new QDialog(this); dialog->setModal(true); dialog->show();
執行這段代碼後,對話框和窗口都出來了,這是由於調用完show()函數後會當即將控制權交給調用者,因此程序能夠執行下去,彈出窗口。而exec()函數不一樣,它只有當對話框被關閉時才返回。內存
非模態對話框能夠與同一個應用程序的其餘窗口進行交互。class
QDialog *dialog = new QDialog(this); dialog->show();
使用new運算髮開闢了內存空間。對話框和窗口相對是獨立的。model