当用户尝试激活主窗口时引发模态QDialog

Raise modal QDialog when user tries to activate MainWindow

本文关键字:模态 QDialog 窗口 用户 激活      更新时间:2023-10-16

我们有一个包含几个qdialog的QMainWindow,这些qdialog使用exec()打开,因此是模态的(这是期望的行为)。

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

我在主窗口/对话框中重载各种焦点/鼠标事件以在这种情况下引发()QDialog,但当单击显示对话框的主窗口时,我找不到一个被激活的事件。有人知道这个问题的解决方法吗?

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