0

我的表单中有 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);
4

2 回答 2

1

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

也许你可以尝试改变风格,看看它是否改变了一些东西。您可以在特定小部件或应用程序范围内设置样式,使用QApplication::setStyle().

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

于 2017-10-31T12:01:46.897 回答
-1

我通过使用 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);
于 2017-11-07T10:26:11.797 回答