У меня есть вкладка в моей форме, что я хочу, чтобы разграничить активную и неактивную вкладку с другим цветом текста в нем. Мой код, как показано ниже. Я не понимаю, чего в нем не хватает, он всегда показывает цвет текста 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);
QPalette
используется как вход для текущего стиля (QStyle
). Точное использование палитры остается за стилем. Некоторые стили могут использовать заданную палитру, но другие могут полностью игнорировать палитру. Например, стиль GTK полностью игнорирует его.
Может быть, вы можете попробовать изменить стиль, чтобы увидеть, если он что-то меняет. Вы можете установить стиль для определенного виджета или приложения с помощью QApplication::setStyle()
,
Как предлагает @saeed, использование таблицы стилей может быть вариантом. Но я лично никогда не использую это, поскольку это может сломать стиль.
Я исправляю это с помощью 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);