Qt6 QMenuBar菜单项鼠标悬停时字体加粗不生效如何解决
问题原因
Qt 样式表对 QMenuBar::item 这类子控件的属性支持有明确限制,默认仅支持背景、边框、内外边距、文字颜色等基础属性,直接在伪状态下设置 font 简写属性、字体大小不会生效。另外 macOS 等平台默认使用系统原生菜单栏渲染,会完全忽略自定义的 QMenuBar 样式配置。
解决方案
1. 调整样式表写法
不要使用 font:bold 这类简写属性,改用独立的字体属性声明,同时提前配置 QMenuBar 的基础字体确保状态修改可继承:
QMenuBar { /* 声明基础字体属性,保证后续选中状态的修改可以生效 */ font: normal 12px; } QMenuBar::item:selected { color: red; font-weight: bold; /* 如需调整字体大小可取消注释下行 font-size: 14px; */ }
2. 跨平台适配(macOS必做)
如果需要在 macOS 平台生效该样式,需要在 MainWindow 的构造函数中添加如下代码,关闭系统原生菜单栏的渲染逻辑:
menuBar()->setNativeMenuBar(false);
3. 排查样式优先级冲突
检查是否在UI设计器中给 QMenuBar、对应菜单项的 Action 单独设置过字体属性,或者全局样式表中有更高优先级的 QMenuBar 字体配置,这些规则会覆盖你写的选中状态样式。
内容的提问来源于stack exchange,提问作者Gabriele Zirpoli
相关产品推荐
相关产品推荐

