qt 模态对话框和非模态对话框

1.模态对话框
(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();

猜你喜欢

转载自blog.csdn.net/qq_38446366/article/details/79870850