Изменить фон индексированных вкладок QTabBar, используя таблицы стилей

Используя таблицы стилей Qt, возможно ли установить различный цвет фона для каждой вкладки в QTabBar, который имеет 4 или более вкладок?

Мое приложение Qt имеет 6 вкладок под строкой меню. Я хотел бы изменить их фоновые цвета на 6 разных цветов, используя таблицы стилей.

На моем пути стоят 2 вопроса:

  • Я могу только стилизовать вкладки "первая", "средняя" и "последняя", используя чистый синтаксис таблицы стилей (поэтому я говорю "4 или более" вкладок).

  • Я не думаю, что отдельные вкладки являются дочерними виджетами QTabBar, к которым я могу получить доступ. Идея заключалась в том, что я мог бы затем прикрепить свойство к каждой дочерней вкладке, на которое я мог ссылаться в таблице стилей.

Например:

// Stylesheet
QTabBar::tab[index="3"] {
   background: blue;
}

// Code
QTabBar* bar = new QTabBar;
int index = bar->addTab("Tab 1");
QWidget* tab1; //= ????
tab1->setProperty("index", index);

Любая помощь приветствуется. Благодарю.

1 ответ

Решение

Отдельные вкладки являются структурами, а не объектами. Эти структуры затем используются для рисования. Смотрите источник Qt для более подробной информации.

У меня был эксперимент с этим, и я не могу найти способ получить прямой индекс, как вы указали. Для справки, я попытался использовать такие свойства, как текст, toolTip, whatsThis, но, к сожалению, не смог получить доступ ни к одному из них из таблиц стилей.

Боюсь, я не думаю, что то, что вы хотите сделать, возможно без подкласса и изменения событий рисования самостоятельно.

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