非活动窗口中的 QMenuBar 项目样式

Posted

技术标签:

【中文标题】非活动窗口中的 QMenuBar 项目样式【英文标题】:QMenuBar items style in inactive window 【发布时间】:2016-02-02 09:39:01 【问题描述】:

当窗口失去焦点时如何禁用在 QMenuBar 中更改 menuItems 外观?

现在,当窗口有焦点时,菜单项清晰可见,但是当它失去焦点时,项目是灰色的,看起来像禁用了。我希望他们一直看起来很正常。

我的平台是 Windows7 上的 Qt4。

活动和非活动窗口上菜单项的一些简单截图:

【问题讨论】:

我不清楚你到底是什么意思。可以发个截图吗? 【参考方案1】:

使用 QStylesheets 并利用 QMenuItems 的状态。

http://www.qtcentre.org/threads/37560-QPushButton-different-stylesheets-for-focus-pressed-released-combinations

QPushButton background-color: blue; 
QPushButton:disabled background-color: yellow; 
QPushButton:pressed background-color: orange; 
QPushButton:focus:pressed background-color: black; 
QPushButton:focus background-color: green; 
QPushButton:hover background-color: red; 
QPushButton:checked background-color: pink; 

http://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qmenubar

如果您想忽略样式表,则可以尝试使用调色板。

http://doc.qt.io/qt-5/qpalette.html#details

颜色组:

Active 组用于具有键盘焦点的窗口。 Inactive 组用于其他窗口。 Disabled 组用于因某种原因被禁用的小部件(不是窗口)。

所以您应该能够为您的 QMenuItem 获取调色板的副本,将活动调色板复制到非活动调色板中,然后在您的 QMenuItem 上调用 setPalette。 Tada,现在它看起来总是很活跃。

希望对您有所帮助。

【讨论】:

解决了使用调色板方法的问题,我找不到合适的样式表来获得相同的效果。

以上是关于非活动窗口中的 QMenuBar 项目样式的主要内容,如果未能解决你的问题,请参考以下文章

如何让 QMenuBar 项目出现在其 QMenu 上

将 QMenuBar 放在 QT 中的 QMainWindow 底部

将密钥发送到Python中的非活动窗口[重复]

禁止“活动WPF”中的“背景”窗口

pyqt5-QMenuBar

减小 mainWindow 中 QMenuBar 和 QToolBar 的宽度