1. 程式人生 > >QT-檔案選擇對話方塊的模態與非模態

QT-檔案選擇對話方塊的模態與非模態

        模態對話方塊與非模態對話方塊的基本概念就不詳說了,簡單說一下:

               模態對話方塊彈出時,主視窗被阻塞,簡單來說就是如果該對話方塊不關閉,則主視窗上的按鈕都不可用;

               非模態對話方塊反之。

      那麼如何在QT中建立模態與非模態的檔案選擇對話方塊呢?

1. 建立模態對話方塊(2種方式)

    (1) QFileDialog *myDlg=new QFileDialog(this); 
                myDlg->exec();

     (2)QFileDialog *myDlg=new QFileDialog(this);   
                myDlg->setModal(true);     
                myDlg->show();

       注:在顯示對話方塊時是否是模態,是根據modal屬性來確定的。modal :是個bool型別,預設值是false,此時用show()方法顯示的對話方塊就是非模態的。
                而如果將該屬性值設定為true,就設定成了模態對話方塊。
       另外:使用exec()方法顯示對話方塊的話,將忽略modal屬性值的設定並把對話方塊設定為模態對話方塊。

2.建立非模態對話方塊

                QFileDialog *myDlg=new QFileDialog(this);   
                //myDlg->setModal(false);     //modal屬性可以不設定,因為預設就是false
                myDlg->show();

注意:要指定對話方塊的父視窗,否則就要手動釋放記憶體,指定父視窗後,父視窗釋放也就會把對話方塊的記憶體釋放,

            但是如果希望在對話方塊關閉之後立即釋放其記憶體可以新增程式碼:myDlg->setAttribute (Qt::WA_DeleteOnClose);

       另外使用exec()方法可以根據其返回值判斷是點選了哪個按鈕退出的,就可以做不同處理了,所以如果需要最好用exec()方法。

  以上就是建立模態與非模態檔案選擇對話方塊的方法,如有錯誤之處,敬請指正!