在创建子小组件后设置父小组件时,子小组件对事件是透明的



我有一个由主窗口和一个设置窗口组成的qt应用程序,我正在尝试将其移植到Qt5。

我使用 QWidget::setParent() 将我的设置窗口完全设置在我的主窗口的顶部(并覆盖),并且在使用 qt5.1.1(我使用的先前版本是 qt 4.8.5)之前,此方法工作正常。

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

我尝试为设置窗口设置不同的标志,但不起作用。

此问题不会在窗口上重现。

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

我在MacOSX 10.7.5上使用qt 5.1.1

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

便携式解决方案涉及使用以下任一方法:

  1. QStackedLayout作为主窗口中的基本布局。请注意,这不适用于未直接应用容器布局的QMainWindowQScrollArea和类似窗口。

  2. 作为基构件类的QStackedWidget,其中插入了QMainWindow或类似的类。

在这两种情况下,您都可以临时将设置窗口插入堆栈中,然后翻转页面。

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

相关内容

  • 没有找到相关文章

最新更新