我有一个带有可检查QActions的菜单:(编辑:这些调用在QWidget子类中,因此'this'指向关联的小部件。)
QAction* action = new QAction(icon, actionName, this);
action->setCheckable(true);
action->setActionGroup(m_actionGroup);
menu->addAction(action);
此菜单附加到工具按钮,该工具按钮位于带有一些其他工具按钮的QWidget中。以前,它是一个更大的小部件的一部分,但我一直在重构将一些东西限制在一起。
当它以前是较大小部件的一部分时,这些动作及其图标显示正常。然而,现在,图标以虚线图案绘制,并且复选框的框在顶部绘制。当我将鼠标悬停在一个动作上时,虚线动作完全消失,它只是复选框。当我选择一个动作时,图标会正常显示。
我尝试在一个小玩具程序中做同样的事情,然后菜单显示正确,所以我在我的相当大的程序之外复制问题时遇到了麻烦。有没有人见过这样的行为,或者知道如何修复它?
Ubuntu 16.04上的Qt 5.5是平台信息。
编辑:它变得更加陌生。最初的实现创建了没有父母的QMenus。由于内存泄漏问题,我本可避免的。但是如果您使用将按钮作为父项的窗口小部件创建菜单,则会出现此行为。这是关于QMenu正在构建的父母正在创建问题,而不是QAction。