加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

如何在Qt中设置按钮的背景颜色后保留Windows Aero主题?

发布时间:2020-12-13 21:26:14 所属栏目:Windows 来源:网络整理
导读:有没有办法改变小部件的背景颜色而不失去它的风格?我的问题在具有Aero主题的 Windows 7 / Vista和Windows 8上也是可重现的.您可以在Qt Designer中看到它的外观: 这里我们有四个按钮:两个顶级小部件看起来都很好(与该程序的所有其他小部件一样),但两个底部
有没有办法改变小部件的背景颜色而不失去它的风格?我的问题在具有Aero主题的 Windows 7 / Vista和Windows 8上也是可重现的.您可以在Qt Designer中看到它的外观:

这里我们有四个按钮:两个顶级小部件看起来都很好(与该程序的所有其他小部件一样),但两个底部小部件看起来都很旧.这种旧式的唯一原因是设置这些按钮的背景颜色(据我所知,桌面窗口管理器将样式重置为旧的,如果窗口小部件不是标准的).

那么,有没有办法强制桌面窗口管理器绘制没有标准背景颜色的按钮? (Microsoft Office可以做到,但我不确定它是标准功能)

你能推荐用现代(Aero主题)取代按钮标准图的Qt扩展吗?或者你可能知道更标准的方法吗?

我发现只有一种方法可以在不失去样式的情况下改变颜色:将部分透明的小部件放在按钮上方(并使鼠标点击透明).你可以在这里看到结果(我的框架比必要的大 – 它用于演示;我还需要色彩校正来补偿透明度,但这并不重要):

它有效,但我不喜欢这个“解决方案”.你有更好的主意吗?

我看到您正在使用样式表来修改按钮的背景颜色.我刚才面临同样的问题.一旦你应用了样式表,按钮就会失去第3个效果,你也看不到悬停效果.
我对它的看法是丢弃使用样式表并使用QPalette设置颜色.例如,
QPalette bluePalette(button->palette()); // original palette
bluePalette.setColor(QPalette::Button,QColor(Qt::blue)); //colour you want
button->setPalette(bluePalette);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读