首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QPalette不能在QTabBar中工作吗?

QPalette不能在QTabBar中工作吗?
EN

Stack Overflow用户
提问于 2017-10-31 18:37:27
回答 2查看 289关注 0票数 0

我有我的表单中的标签栏,我想要的是区分活动和不活动的标签与它不同颜色的文本。我的代码如下。我不明白其中缺少了什么,它总是在所有选项卡中显示QPalette::Active text颜色

代码语言:javascript
复制
QPalette Palette;
QTabBar* pTabBar = tabBar();
pTabBar->setAutoFillBackground(false);
pTabBar->setDrawBase(true);
Palette.setColor(QPalette::Active, QPalette::Window,       QColor(255, 255, 255));
Palette.setColor(QPalette::Active, QPalette::WindowText,   QColor(117, 121, 124));
pTabBar->setPalette(Palette);
Palette.setColor(QPalette::Inactive, QPalette::Window,     QColor(171, 175, 178));
Palette.setColor(QPalette::Inactive, QPalette::WindowText, QColor(64,  68,  71));
pTabBar->setPalette(Palette);
EN

回答 2

Stack Overflow用户

发布于 2017-10-31 20:01:47

QPalette用作当前样式(QStyle)的输入。调色板的确切用法由样式决定。某些样式可能使用设置调色板,但另一些样式可能选择完全忽略调色板。例如,GTK样式完全忽略了它。

也许你可以试着改变一下样式,看看它是否改变了什么。您可以在特定小部件上设置样式,也可以使用QApplication::setStyle()在应用程序范围内设置样式。

正如@saeed所建议的,使用样式表可以是一种选择。但我个人从不使用它,因为它会破坏风格。

票数 1
EN

Stack Overflow用户

发布于 2017-11-07 18:26:12

我通过使用QPalette修复了这个问题

代码语言:javascript
复制
QTabBar* pTabBar = new QTabBar();
QPalette p = pTabBar->palette();
p.setColor(QPalette::Window, QColor(255,255,255));
p.setColor(QPalette::Button, QColor(255,255,255));
pTabBar->setPalette(p);
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47033259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档