1.模态对话框
(1)要想使一个对话框成为模态对话框,只需要条用它的exec()函数。
QDialog dialog(this);
dialog.exec();
(2)show()函数建立模态对话框,调用函数setModal(true)函数即可。
QDialog *dialog = new QDialog(this);
dialog->setModel(true);
dialog->show();
QDialog *dialog = new QDialog(this);
dialog->show();
setWindowModality()函数,有一个参数设置模态对话框要阻塞的窗口类型,可以是Qt::NonModal(不阻塞任何窗口,几非模态)、
Qt::WindowModel(阻塞它的父窗口和所有的祖先窗口及他们的子窗口)、Qt::ApplicationModel(阻塞整个应用程序的窗口)三者之一,
(1)要想使一个对话框成为模态对话框,只需要条用它的exec()函数。
QDialog dialog(this);
dialog.exec();
(2)show()函数建立模态对话框,调用函数setModal(true)函数即可。
QDialog *dialog = new QDialog(this);
dialog->setModel(true);
dialog->show();
总结:setModel()与用exec()函数时的效果是不一样的,调用show()函数后会立刻把控制权交给调用者,程序可以继续往下执行;
而调用exec()函数,只有当对话框关闭时才会有返回值。2.非模态对话框
(1)要想使一个对话框成为非模态对话框,使用new动态创建。QDialog *dialog = new QDialog(this);
dialog->show();
setWindowModality()函数,有一个参数设置模态对话框要阻塞的窗口类型,可以是Qt::NonModal(不阻塞任何窗口,几非模态)、
Qt::WindowModel(阻塞它的父窗口和所有的祖先窗口及他们的子窗口)、Qt::ApplicationModel(阻塞整个应用程序的窗口)三者之一,
setModel()函数默认的是Qt::ApplicationModel.
3. 非模态对话框:防止内存泄漏
QDialog *p =new QDialog;
p->setAttribute(Qt::WA_DeleteOnClose);
p->show();