1.模态对话框创建:
第一种方法:
QDialog dialog(this);
dialog.exec();
this为该对话框的父窗口。这种方法会阻塞窗口,等待窗口返回。
我们可以判断返回值是regected还是accepted
FileSaveD dlg(msg,this);
int res = dlg.exec();
if(res==QDialog::Accepted)
{
close();
}
第二种方法:
QDialog *dialog = new QDialog(this);
dialog->setModel(Qt::ApplicationModel);
dialog->show();
这种情况show不会阻塞
其中setModel()参数有三种:Qt::NonModel,不阻塞任何窗口,即非模态对话框;Qt::WindowModel,阻塞其所有祖先窗口以及妻子窗口;Qt::ApplicationModel,阻塞整个应用程序窗口。
2.非模态对话框创建:
1 2 |
|
记住要制定其父窗口,否则要手动释放内存。
accept()函数是QDialog类的一个槽,对于一个使用exec()函数实现的模态对话框,执行了这个槽就会隐藏这个模态对话框,并返回QDialog::Accpeted值,与其对应的还有一个reject()槽,他可以返回一个QDialog::Rejected值。
close()槽也不一定是程序退出 ,只有当只剩下最后一个主界面了(也就是没有父窗口的界面),这是调用close()槽,程序才会退出