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

StackOverflow https://stackoverflow.com/questions/2298166

  •  21-09-2019
  •  | 
  •  

Вопрос

Можно ли, используя таблицы стилей 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);

Любая помощь приветствуется.Спасибо.

Это было полезно?

Решение

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top