Pergunta

Usando folhas de estilo QT, é possível definir uma cor de fundo diferente para cada guia em um qtabbar que tenha 4 ou mais guias?

Meu aplicativo QT possui 6 guias abaixo da barra de menus. Eu gostaria de alterar suas cores de fundo para 6 cores diferentes usando folhas de estilo.

2 questões parecem estar em meu caminho:

  • Só posso estilizar as guias "Primeiro", "Middle" e "Last" usando sintaxe de folha de estilo pura (daí que digo "4 ou mais" guias).

  • Eu não acho que as guias individuais sejam widgets infantis do QTABBAR que eu possa acessar. A idéia é que eu poderia anexar uma propriedade a cada guia Child que eu poderia fazer referência na folha de estilo.

Por exemplo:

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

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

Qualquer ajuda seria muito apreciada. Obrigado.

Foi útil?

Solução

As guias individuais são estruturas em vez de objetos. Essas estruturas são então usadas na pintura. Veja o Fonte QT para mais detalhes.

Tive um experimento com isso e não consigo encontrar uma maneira de acessar um índice direto, como você indicou. Para sua referência, tentei usar propriedades como o texto, a dica de ferramenta, o que se tem, mas não consegui acessar nenhuma delas nas folhas de estilo, infelizmente.

Receio que não acho que o que você queira fazer seja possível sem subclassificar e modificar os eventos de pintura você mesmo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top