正确的做法:
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();