当用户尝试激活MainWindow时,引发模态QDialog

时间:2014-08-13 07:15:18

标签: c++ qt modal-dialog qt4.6

我们有一个QMainWindow包含几个QDialog,它们是使用exec()打开的,因此是模态的(这是所需的行为)。

现在,当用户打开其中一个对话框时,选择与某些外部程序(例如webbrowser)进行交互,该程序与Dialog但不是MainWindow重叠,然后尝试返回我们的程序,他无法进行由于模态对话框,单击主窗口的可见区域。为了返回,他需要移动/最小化阻碍QDialog视图的其他窗口或使用任务栏激活它。这可能会使程序被冻结(特别是如果已经过了一段时间并且用户不知道打开的对话框)。

我在主窗口/对话框中重载了各种焦点/鼠标事件以在这种情况下引发()QDialog,但是当单击主窗口时我无法找到一个被激活,因为显示了对话框。有人知道这方面的解决方案吗?我认为到目前为止我一定很容易忽视它。

1 个答案:

答案 0 :(得分:4)

确保QDialogs在构造函数中获得正确的父级(主窗口)。 这应该可以解决问题。