模态对话框:对话框打开时不可以对其他窗口进行操作 具有阻塞功能
非模态对话框:对话框打开时可以对其他窗口进行操作
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);