3

我有一个 qt 应用程序,它由一个主窗口和一个我试图移植到 Qt5 的设置窗口组成。

QWidget::setParent()习惯将我的设置窗口设置在(并覆盖)我的主窗口的顶部,并且在使用 qt5.1.1(我使用的以前的版本是 qt 4.8.5)之前,这个方法工作得很好。

我现在遇到的问题是设置窗口正在正确显示,但几乎所有鼠标事件(减去某些按钮上的鼠标)都直接传递到下面的主窗口。

我尝试为设置窗口设置不同的标志无效。

此问题不会在 Windows 上重现。

一段时间以来,我一直在寻找解决此问题的方法。

我在 MacOSX 10.7.5 上使用 qt 5.1.1

4

1 回答 1

2

你的问题是重叠的兄弟姐妹。当您重新设置设置窗口时,它在主窗口内具有与其重叠的各种同级。正如您刚刚了解到的,这似乎具有未定义的行为。您的窗口不会仅仅通过重新设置父级而添加到任何布局中。如果将它添加到布局中(堆叠布局除外),您就不会有这个问题,当然它看起来也不正确。

便携式解决方案将涉及使用:

  1. AQStackedLayout作为主窗口内的基本布局。请注意,这不适用于QMainWindowQScrollArea以及没有直接应用容器布局的类似窗口。

  2. AQStackedWidget作为基础小部件类,其中QMainWindow插入了您的或类似的类。

在这两种情况下,您都暂时将设置窗口插入堆栈,然后翻页。

请注意,从用户体验的角度来看,这种行为是有问题的。

于 2013-09-12T20:08:16.640 回答