模态對話框:就是在其沒有被關閉之前,使用者不能與同一個應用程式的其他視窗進行互動,直到該對話框關閉。
非模态對話框:當被打開時,使用者既可選擇和該對話框進行互動,也可以選擇同應用程式的其他視窗互動。
QDialog
一、生成模态對話框:
1、
QColorDialog colorDialog;//臨時變量
colorDialog.exec();//阻塞
2、
QColorDialog* colorDialog = new QColorDialog(this);
colorDialog->setAttribute(Qt::WA_DeleteOnClose);//使對話框關閉時自動delete
colorDialog->setModal(true);
colorDialog->show();
二、生成非模态對話框
//colorDialog->setModal(false);//預設就是false,可以不要這句話
colorDialog->show();//此時對話框是非模态的,但是永遠在主視窗前面
QWidget
一、模态
在類構造函數中:
setAttribute(Qt::WA_ShowModal, true);
二、非模态
直接show
PS:對于某些模态子視窗,當點選其後面的主視窗時,會發出叮叮~的響聲,并且會模态框會抖動;而有些又毫無反應。
第一種是因為此模态框的父類就是this,而後面的是NULL
長風破浪會有時,直挂雲帆濟滄海!