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

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

Чтобы сделать это, я повторно реализовал функцию 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#ColorRole-enum все перечисленные списки доступны для использования, но ни один из них не меняет цвет фона.

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

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

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

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

QTabWidget Реквизит:

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

0

Решение

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

0

Другие решения

Вы можете попробовать:
setStyleSheet (
«цвет: rgb (желтый код);» /цвет текста/
«background-color: rgb (код цвета);» /цвет бг/

0

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