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()方法。

  以上就是创建模态与非模态文件选择对话框的方法,如有错误之处,敬请指正!

你可能感兴趣的:(QT+OSG,QT)