c++ - 当用户尝试激活 MainWindow 时引发模态 QDialog

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

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

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

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

最佳答案

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

关于c++ - 当用户尝试激活 MainWindow 时引发模态 QDialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25280212/

相关文章:

c++ - 将字符串的 c_str 的结果转换为 char* 是否安全?

c++ - 以编程方式在 QTreeView 中选择一行

javascript - CSS模态跳到底部

html - Bootstrap 模式中的图像问题

javascript - 如何使用最后一个弹出模态上的关闭按钮关闭多个 Bootstrap 模态

c++ - 重载函数仅在返回类型上不同

c++ - 使用 cv::goodFeaturesToTrack 拟合线

C++ GNU-Plot 在 x11 窗口中是非交互式的

windows - 如何在 Qt 中为堆叠小部件使用动画?

c++ - Qt 远程对象