【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时候,一切子孩子自动销毁
=============================================
程序下载链接:本节工程代码