Изменить фон индексированных вкладок QTabBar, используя таблицы стилей - PullRequest
3 голосов
/ 19 февраля 2010

Используя таблицы стилей 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 Ответ

5 голосов
/ 23 июля 2010

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

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

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

...