Qt 中,对话框的打开具有三种方式:
- QDialog::show(): 非模态
- QDialog::exec(): 模态
- QDialog::open(): 窗口模态
前两种我们很容易理解,下面来看看什么是窗口模态。比如,我们有两个窗口(以下图示来自 Qt Developer Day, 2009):
使用如下代码,我们用 open() 函数打开一个对话框:
- if(!messageBox) {
- messageBox = new QMessageBox("SDI",
- "The document has been modified. \n"
- "Do you want to save your changes?",
- QMessageBox::Warning,
- QMessageBox::Yes | QMessageBox::Default,
- QMessageBox::No,
- QMessageBox::Cancel | QMessageBox::Escape,
- this);
- connect(messageBox, SIGNAL(finished(int)), SLOT(handleDialogClose(int)));
- }
- messageBox->open();
看看运行的结果:
这就是 open() 函数的效果:它类似模态对话框,但是只会阻塞一个窗口,而不是将整个系统阻塞掉。
转自:http://devbean.blog.51cto.com/448512/491509