Changer arrière-plan des onglets QTabBar indexés à l'aide de feuilles de style

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

  •  21-09-2019
  •  | 
  •  

Question

est à l'aide de feuilles de style Qt, possible de définir une couleur de fond différente pour chaque onglet dans un QTabBar qui a 4 ou plusieurs onglets?

Ma application Qt a 6 onglets sous la barre de menu. Je voudrais changer les couleurs de fond 6 couleurs différentes en utilisant les feuilles de style.

2 problèmes semblent être debout sur mon chemin:

  • Je ne peux le style de la "première", "moyen" et "dernier" onglets en utilisant la syntaxe pure feuille de style (donc pourquoi je dis que les onglets "4 ou plus").

  • Je ne pense pas que les onglets sont des widgets enfants du QTabBar que je peux accéder. L'idée étant que je pourrais alors joindre une propriété à chaque onglet enfant que je pouvais faire référence à la feuille de style.

Par exemple:

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

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

Toute aide serait très appréciée. Merci.

Était-ce utile?

La solution

Les pattes individuelles sont structs plutôt que des objets. Ces struct sont ensuite utilisés sur la peinture. Voir la source de Qt pour plus détails.

J'ai eu une expérience avec cela et je ne peux pas trouver un moyen d'accéder à un indice direct, comme vous l'avez indiqué. À titre de référence, j'ai essayé d'utiliser des propriétés telles que le texte, toolTip, WhatsThis mais n'a pas pu accéder à aucun d'entre eux des feuilles de style, malheureusement.

Je crains que je ne pense pas que ce que vous voulez faire est possible sans modifier les sous-classement et les événements de peinture vous.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top