在Qt中关闭菜单的主题



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

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

菜单通过exec((显示,QMenu和QActions是使用QWidget作为其父级创建的,以防有帮助。

可能它已被全局设置; 查找对 QApplication::setStyleSheet 的调用,以及该全局样式表中的QMenu选择器。它也可以设置为父小部件的样式表中。

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

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

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

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

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

void styleMenu(QMenu * menu) {
  #ifndef Q_OS_MACOS
  menu->setProperty("styled", true);
  #endif
}
...
styleMenu(menu); // no-op on OS X

最新更新