天天看點

模态框與非模态框

模态對話框:就是在其沒有被關閉之前,使用者不能與同一個應用程式的其他視窗進行互動,直到該對話框關閉。

非模态對話框:當被打開時,使用者既可選擇和該對話框進行互動,也可以選擇同應用程式的其他視窗互動。

 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

長風破浪會有時,直挂雲帆濟滄海!