2

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

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

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

4

1 回答 1

4

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

于 2014-08-13T07:26:44.737 回答