QPalette 在 QTabBar 中不起作用?
Posted
技术标签:
【中文标题】QPalette 在 QTabBar 中不起作用?【英文标题】:QPalette Does not work in QTabBar? 【发布时间】:2017-10-31 10:37:27 【问题描述】:我的表单中有 Tabbar,我想要的是用不同颜色的文本来区分活动和非活动选项卡。我的代码如下。我不明白其中缺少什么,它总是在所有选项卡中显示 QPalette::Active 文本颜色
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);
【问题讨论】:
【参考方案1】:QPalette
用作当前样式 (QStyle
) 的输入。调色板的确切用法由样式决定。有些样式可能会使用设置的调色板,但有些样式可能会选择完全忽略调色板。例如 GTK 样式完全忽略它。
也许您可以尝试更改样式以查看它是否会改变某些内容。您可以使用QApplication::setStyle()
在特定小部件或应用程序范围内设置样式。
正如@saeed 所建议的,可以选择使用样式表。但我个人从不使用它,因为它会破坏风格。
【讨论】:
【参考方案2】:我使用 QPalette 解决了这个问题
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);
【讨论】:
解释代码。为什么它不起作用以及您所做的编辑是如何起作用的。以上是关于QPalette 在 QTabBar 中不起作用?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 QPalette 自定义 Qpushbutton 上的文本?
窗口挂钩在 Windows 7 中不起作用,但在 Windows xp 中不起作用
为啥 heightForHeaderInSection 在 iOS 4.3 中不起作用?