【发布时间】:2014-11-17 02:57:49
【问题描述】:
大家好,
我有一些代码根据某些数据生成动态填充的 QMenu(我将其称为 thisMenu)。创建 QMenu thisMenu,将一些“主”QWidget 作为父级,并添加到此 QWidget 内的 QMenuBar (menuBar.addMenu(&thisMenu)。稍后,我希望用户能够从上下文菜单访问 thisMenu(用户右键单击 QWidget 的某些部分,它会弹出一个 QMenu(称为 contextMenu),其中包含一些操作,以及之前的 QMenu 作为子菜单)。
如果我重用我第一次使用 contextMenu.addMenu(&thisMenu) 创建的 QMenu,我会发现,即使 contextMenu 在正确的全局位置弹出,thisMenu 总是被翻译到其他位置并且有时出现在上面,有时出现在 contextMenu 下.
我可以测试这是否与父链相关联:thisMenu 不是 contextMenu 的子项,如果我将其创建为 contextMenu 的子项,则一切正常。有没有办法干净地处理这种情况,而不需要重新创建类似于 thisMenu 的 QMenu,或者更改 thisMenu 的父级;即在 QMenuBar 和某些上下文菜单/QMenu 中重用 thisMenu?在其他方面,处理 QMenu 的育儿链和共享 QMenu 的正确方法是什么?
谢谢,
【问题讨论】:
标签: c++ qt parent qobject qmenu