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

时间:2016-02-02 09:39:02

标签: c++ qt windows-7 qt4

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

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

我的平台是Windows7上的Qt4。

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

menu item normal menu item on inactive window

1 个答案:

答案 0 :(得分: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

  

颜色组:

     
      
  • “活动”组用于具有键盘焦点的窗口。
  •   
  • 非活动组用于其他窗口。
  •   
  • “已禁用”组用于因某些原因而被禁用的窗口小部件(而不是窗口)。
  •   

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

希望有所帮助。