天天看點

QT-模态對話框與非模态對話框

模态對話框:對話框打開時不可以對其他視窗進行操作     具有阻塞功能

非模态對話框:對話框打開時可以對其他視窗進行操作

1.模态對話框的建立:

/************模态對話框建立************/
        QDialog * dlg = new QDialog(this);
        dlg->resize(200,100);//對話框太小會出現警告
        dlg->exec();
        qDebug()<<"123";
           

2.非模态對話框的建立:

錯誤建立方法:

/************非模态對話框建立************/
        QDialog dlg2(this);
        dlg2.resize(200,100);
        dlg2.show();
           

建立對象建立在棧上,當代碼運作過之後就會釋放,是以dlg2會閃一下就關閉了

解決方法是在堆上建立new一個

正确的建立方法:

/************非模态對話框建立************/
        QDialog * dlg2 = new QDialog(this);
        dlg2->resize(200,100);
        dlg2->show();
           

對話框設定父親時隻有關閉主界面後才會執行析構函數對話框才能釋放,是以要使用下面的代碼,在關閉對話框時就進行釋放。

//設定父親之後隻有父親關閉之後才會釋放,有時候會導緻記憶體洩漏,通過下面代碼進行關閉釋放
        dlg2->setAttribute(Qt::WA_DeleteOnClose);
           
Qt

繼續閱讀