【发布时间】:2014-08-13 07:15:18
【问题描述】:
我们有一个 QMainWindow 包含几个 QDialogs,这些 QDialogs 使用 exec() 打开,因此是模态的(这是所需的行为)。
现在,当用户打开这些对话框之一时,选择与一些与对话框重叠但不与 MainWindow 重叠的外部程序(例如 webbrowser)进行交互,然后尝试返回我们的程序,他无法由于模态对话框,通过单击主窗口的可见区域。为了返回,他需要移动/最小化阻碍 QDialog 视图的其他窗口或使用任务栏激活它。这可能会给人留下程序被冻结的印象(特别是如果已经过了一段时间并且用户不知道打开的对话框)。
在这种情况下,我在主窗口/对话框中重载了各种焦点/鼠标事件以 raise() QDialog,但是在显示对话框时单击主窗口时我找不到一个被激活的事件。有人知道解决方案吗?我认为到目前为止我一定忽略了一些简单的事情。
【问题讨论】:
标签: c++ qt modal-dialog qt4.6