gpt4 book ai didi

c++ - 当在创建子项后设置父项时,子项对事件是透明的

转载 作者:太空狗 更新时间:2023-10-29 21:44:58 24 4
gpt4 key购买 nike

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

我使用 QWidget::setParent() 将我的设置窗口设置在(并覆盖)我的主窗口之上,并且在使用 qt5.1.1 之前(我使用的之前版本是 qt 4.8.5) 这个方法效果很好。

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

我试过为设置窗口设置不同的标志,但没有效果。

此问题不会在 Windows 上重现。

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

我在 MacOSX 10.7.5 上使用 qt 5.1.1

最佳答案

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

可移植解决方案将涉及使用:

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

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

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

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

关于c++ - 当在创建子项后设置父项时,子项对事件是透明的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18740915/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com