【发布时间】:2014-07-02 05:36:38
【问题描述】:
有一个继承自 QMainWindow 的 MainWindow。并且有从 QDialog 继承的 SettingsDialog。在 MainWindow 中,用户可以通过单击“设置”按钮将 SettingsDialog 作为模式对话框打开。
void MainWindow::showSettingsDialog()
{
SettingsDialog settingsDialog(this);
settingsDialog.exec();
}
应用有托盘通知。如果用户点击通知 ReadWindow(继承自 QWidget)将作为非模态窗口打开。
void MainWindow::onTrayMessageClicked()
{
activateWindow();
ReadWindow *readWindow = new ReadWindow(this);
readWindow->show();
}
现在,如果用户在打开 SettingsDialog 时单击托盘通知,ReadWindow 将在 SettingsDialog 前面打开。用户可以激活 ReadWindow,但在 SettingsDialog 打开时,ReadWindow 中的所有 UI 元素(例如所有按钮)都被阻止(即按钮不可点击)。
如何在 SettingsDialog 下打开 ReadWindow 并且用户不能选择它(因为 SettingsDialog 是模态的)?
编辑:我的目标是:在任何其他模式窗口下打开 ReadWindow,用户在关闭所有模式窗口之前不得与 ReadWindow 交互
【问题讨论】:
-
我尝试从 settingsDialog 调用
void QWidget::raise()。它将 SettingsDialog 置于最前面,但仍可以激活 ReadWindow。 -
感谢您的建议。但我还没有解决问题。所以还在等待帮助。