Windows中有一项功能:如果当前窗口未激活,则此窗口的主菜单看起来已禁用(但实际上它只是灰显,因此您可以单击此菜单中的任何项目)。切换到另一个程序时没关系,但是当你转到子窗口时看起来不对。
即使使用标准记事本,也很容易重现这种效果:
问题如下:如何仅为我的程序阻止此效果?在我的程序(C ++和Qt)中,当用户访问时,我在主菜单中的所有项目中都有相同的灰度儿童窗户。有没有办法阻止它?
我这里没有放任何代码,因为这种效果在大多数程序中都可以重现。但我希望可以更改QMenu
或QMenuBar
的标记/属性来更正此行为。有可能吗?
答案 0 :(得分:0)
我们可以更正QMenuBar
的调色板,以替换处于非活动状态的文本颜色,文本颜色处于活动状态。
代码:
QPalette pal = pMenuBar->palette();
QColor col = pal.color(QPalette::Active, QPalette::ButtonText);
pal.setColor(QPalette::Inactive, QPalette::ButtonText, col);
pMenuBar->setPalette(pal);
用户不会看到主菜单中的项目变灰,因为活动和非活动项目的文本颜色将相同。
(从理论上讲,同一项目的活动状态和非活动状态的背景颜色可能不同。因此,对于背景也可以重新替换背景颜色)