QPalette не работает в QTabBar?

У меня есть вкладка в моей форме, что я хочу, чтобы разграничить активную и неактивную вкладку с другим цветом текста в нем. Мой код, как показано ниже. Я не понимаю, чего в нем не хватает, он всегда показывает цвет текста 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);

0

Решение

QPalette используется как вход для текущего стиля (QStyle). Точное использование палитры остается за стилем. Некоторые стили могут использовать заданную палитру, но другие могут полностью игнорировать палитру. Например, стиль GTK полностью игнорирует его.

Может быть, вы можете попробовать изменить стиль, чтобы увидеть, если он что-то меняет. Вы можете установить стиль для определенного виджета или приложения с помощью QApplication::setStyle(),

Как предлагает @saeed, использование таблицы стилей может быть вариантом. Но я лично никогда не использую это, поскольку это может сломать стиль.

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);
-1

По вопросам рекламы [email protected]