【003】模态和非模态对话框

在MyWidget构造函数 进行如下 3 个实验。

 1 MyWidget::MyWidget(QWidget *parent) :
 2     QWidget(parent),ui(new Ui::MyWidget)
 3 
 4 {   
 5     ui->setupUi(this);
 6     /*1.The DLG will disappear qucikly*/
 7     QDialog dialog(this);
 8     dialog.show();
 9     
10     /*2.*/
11     //QDialog *dialog = new QDialog(this);
12     //dialog->setModal(true);
13     //dialog->show();
14     
15     /*3.*/
16     //QDialog dialog(this); 
17     //dialog.exec();
18 }

第一种情况:在MyWidget出现前,有一个窗口一闪而过。这个就是建立的dialog。因为这个是局部变量,构造函数结束后,自动情况内存

第二种情况:由于为dialog 申请了 内存空间,所以构造玩 MyWidget后,dialog并不会消失

第三种情况:注意show ()函数和 exec ()是不一样的,

  前者执行显示后,立即将控制权交给调用者,即立即返回;

  后者,只有当dialog关闭的时候,才将控制权返回给调用者

 

再说明一点,使用new 创建的对象,当指定父类的时候。不必delete。因为父窗口delete时候,一切子孩子自动销毁

=============================================

程序下载链接:本节工程代码

posted on 2014-01-05 17:42  小螺号giao~giao~giao  阅读(146)  评论(0编辑  收藏  举报