非活动窗口中的 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 项目样式的主要内容,如果未能解决你的问题,请参考以下文章