天天看點

QWidget設定成模态對話框并彈框顯示

正确的做法:

1、

FormProcessRoi *form = new FormProcessRoi(this);//隻能用指針,不能執行個體化為對象
//Qt::NonModal 不阻塞
//Qt::WindowModal 阻塞父視窗,所有祖先視窗及其子視窗
//Qt::ApplicationModal 阻塞整個應用程式
form->setWindowModality(Qt::ApplicationModal); //設定阻塞類型
form->setAttribute(Qt::WA_ShowModal, true);    //屬性設定 true:模态 false:非模态
form->setWindowFlags(Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint | Qt::Dialog);
form->show();      

2、

FormAbout *a = new FormAbout(nullptr); //不能有父類

a->setAttribute(Qt::WA_ShowModal, true); //屬性設定true:模态;false:非模态

a->setWindowTitle(tr("關于本軟體"));

a->setWindowIcon(QIcon(":/res/icons/main.png"));

a->setWindowFlags(/*a->windowFlags()|*/ Qt::CustomizeWindowHint | Qt::WindowCloseButtonHint | Qt::Tool); //使得工作列不會有該視窗的圖示

a->show();

錯誤的做法:

FormProcessRoi form;

form.show();

繼續閱讀