Qt (C++) Установка цвета отдельных вкладок в QWidgetTab

Поэтому мне нужно, чтобы пользователь имел возможность полностью настраивать вкладки, IE должен щелкнуть правой кнопкой мыши на каждой вкладке и вызвать цветовую палитру, которая позволит им изменять цвет этой отдельной вкладки.

Чтобы сделать это, я повторно реализовал функцию paintEvent в QTabBar, как предлагали многие другие посты, однако я просто не могу заставить вкладки реально менять цвет...

В настоящее время я просто бегу по каждой вкладке и меняю все свойства QPalette на желтый.

Текст вкладки меняется на желтый, НО больше ничего не делает!

Код для paintEvent:

protected:
void paintEvent(QPaintEvent *e) {

    QStylePainter painter(this);
    QStyleOptionTab opt;

    for (int i = 0; i < count(); i++)
    {
        initStyleOption(&opt, i);

        opt.palette.setColor(QPalette::Button, QColor("yellow"));
        opt.palette.setColor(QPalette::Base, QColor("yellow"));
        opt.palette.setColor(QPalette::Window, QColor("yellow"));
        opt.palette.setColor(QPalette::AlternateBase, QColor("yellow"));
        opt.palette.setColor(QPalette::BrightText, QColor("yellow"));
        opt.palette.setColor(QPalette::ButtonText, QColor("yellow"));
        opt.palette.setColor(QPalette::Highlight, QColor("yellow"));
        opt.palette.setColor(QPalette::Text, QColor("yellow"));
        opt.palette.setColor(QPalette::WindowText, QColor("yellow"));
        opt.palette.setColor(QPalette::Background, QColor("yellow"));
        opt.palette.setColor(QPalette::Foreground, QColor("yellow"));
        opt.palette.setColor(QPalette::ToolTipBase, QColor("yellow"));
        opt.palette.setColor(QPalette::ToolTipText, QColor("yellow"));

        painter.drawControl(QStyle::CE_TabBarTabShape, opt);
        painter.drawControl(QStyle::CE_TabBarTabLabel, opt);
    }
}

Как я уже сказал, текст меняется на желтый, а фон - нет, в соответствии с http://doc.qt.io/archives/qt-4.8/qpalette.html они все перечисления, доступные для использования еще похоже, что ни один из них не меняет цвет фона.

Любая помощь будет оценена.

Приветствия.

РЕДАКТИРОВАТЬ:

Кажется, это работает, когда я изменяю форму вкладки на треугольную, однако, опять же, я не хочу этого. Это просто ошибка в Qt?

QTabWidget Реквизит:

TabWidget* centralTab = new TabWidget();
centralTab->setTabPosition(QTabWidget::South);
centralTab->setTabShape(QTabWidget::Triangular);
centralTab->setMovable(true);
m_mainWindow->setCentralWidget(centralTab);

2 ответа

Как предложил @eyllanesc, мне пришлось использовать a.setStyle("fusion"), где 'a' - это используемое приложение QApplication.

Вы можете попробовать: setStyleSheet( "color: rgb(желтый код);" /text color/ "background-color: rgb (color code);" /bg color/

Другие вопросы по тегам