gpt4 book ai didi

c++ - 在多个 Qmenu 中重用一个 QMenu

转载 作者:搜寻专家 更新时间:2023-10-31 00:34:28 24 4
gpt4 key购买 nike

大家好

我有一些代码根据一些数据生成动态填充的 QMenu(我将其称为 thisMenu)。创建 QMenu thisMenu,将一些“主”QWidget 作为父级,并添加到此 QWidget 中的 QMenuBar (menuBar.addMenu(&thisMenu)。后来,我希望用户能够从上下文菜单访问 thisMenu(用户右键单击 QWidget 的某些部分,弹出一个带有一些操作的 QMenu(称为 contextMenu),以及之前的 QMenu 作为子菜单)。

如果我重用我首先使用 contextMenu.addMenu(&thisMenu) 创建的 QMenu,我发现,即使 contextMenu 在正确的全局位置弹出,thisMenu 总是被转换到其他位置,有时出现在 contextMenu 上方,有时出现在 contextMenu 下方.

我可以测试它链接到父链:thisMenu 不是 contextMenu 的子项,如果我将它创建为 contextMenu 的子项,一切都很好。有没有一种方法可以干净地处理这种情况,而无需重新创建类似于 thisMenu 的 QMenu,或更改 thisMenu 的父级?即在 QMenuBar 和某些上下文菜单/QMenu 中重复使用 thisMenu?另外,处理 QMenu 的父级链和共享 QMenu 的正确方法是什么?

谢谢,

最佳答案

In other what is the proper way of handling parenting chain for QMenu and sharing QMenu?

您不能在多个地方共享一个 QMenu——每个 QMenu 一次只能存在于一个地方。您应该创建单独的 QMenus:一个用于菜单栏,一个用于上下文菜单。

一种简单的方法是将菜单生成代码放入 for 循环中,以创建多个相同的菜单。

请问您为什么要重用您的 QMenu?

I can test that this is linked to the parenting chain : thisMenu is not a child of contextMenu

是的,这在文档中有描述。当您将一个 QMenu 添加到另一个时,父级不会更改:http://qt-project.org/doc/qt-5/QMenu.html#addMenu

if I create it a child of contextMenu, everything is fine.

小部件的位置始终绘制在相对于其父级的位置。 (记住:QMenu 是 QWidget)

关于c++ - 在多个 Qmenu 中重用一个 QMenu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25986012/

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