关闭Qt中的菜单主题?

时间:2017-03-31 16:46:37

标签: macos qt qmenu qaction qstyle

我继承了一个带有主题右键菜单的Qt项目(在macOS上看起来很奇怪)。我从QMenu中删除了setStyleSheet()调用,但它仍然只突出显示文本而不是项目的背景,并使用了奇怪的字体大小。

在Qt应用程序中是否还有其他地方有人可以设置菜单以某种方式继承的颜色?

菜单通过exec()显示,QMenu和QActions是以QWidget作为父母创建的,以防万一。

2 个答案:

答案 0 :(得分:1)

可能它已在全球范围内设定;寻找对QApplication::setStyleSheet的调用,以及该全局样式表中的QMenu选择器。它也可以设置为父窗口小部件的样式表。

一般情况下,如果我是你,我会在项目中找到包含QMenu选择器的样式表。

答案 1 :(得分:1)

样式是可继承的。可以在任何窗口小部件上显示全局样式表或样式表,这些窗口小部件是显示的菜单的父级。您需要检查它们并删除菜单样式。

您可以使用动态属性来描述菜单样式的适用性,以描述样式是否应该适用:

QMenu[styled="true"] { ... }

然后,在设置菜单样式的平台上,应用属性:

void styleMenu(QMenu * menu) {
  #ifndef Q_OS_MACOS
  menu->setProperty("styled", true);
  #endif
}

...
styleMenu(menu); // no-op on OS X