1

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

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

菜单通过 exec() 显示,并且 QMenu 和 QActions 以 QWidget 作为其父级创建,以防万一。

4

2 回答 2

1

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

一般来说,如果我是你,我会 grep 项目中包含QMenu选择器的样式表。

于 2017-03-31T16:52:58.080 回答
1

样式是可继承的。可以有一个全局样式表,或者任何作为所显示菜单父级的小部件上的样式表。您需要检查它们并删除菜单样式。

您可以通过使用动态属性来描述是否应应用样式来限制菜单样式的适用性:

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

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

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

...
styleMenu(menu); // no-op on OS X
于 2017-03-31T16:53:46.200 回答