Domanda

Utilizzando fogli di stile Qt, è possibile impostare un colore di sfondo diverso per ogni scheda in un QTabBar che ha 4 o più schede?

La mia applicazione Qt dispone di 6 schede sotto la barra dei menu. Mi piacerebbe cambiare i loro colori di sfondo a 6 colori diversi utilizzando i fogli di stile.

2 numeri sembrano essere in piedi a modo mio:

  • posso lo stile solo la "prima", "medio", e schede "ultimi" utilizzando la sintassi di stile puro (da qui il motivo per cui dico "4 o più" schede).

  • Non credo che le singole schede sono widget figlio della QTabBar che io possa accedere. L'idea è che ho potuto quindi fissare una proprietà per ogni scheda bambino che ho potuto fare riferimento nel foglio di stile.

Ad esempio:

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

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

Qualsiasi aiuto sarebbe molto apprezzato. Grazie.

È stato utile?

Soluzione

Le singole schede sono le strutture, piuttosto che oggetti. Queste le strutture vengono poi utilizzati sulla pittura. Vedere la Qt fonte per più dettagli.

Ho avuto un esperimento con questo e non riesco a trovare un modo per accedere a un indice di diretta, come da te indicato. Per il vostro riferimento, ho provato ad utilizzare le proprietà, come il testo, tooltip, whatsthis ma non ha potuto accedere a qualsiasi di loro dai fogli di stile, purtroppo.

Ho paura non credo che ciò che si vuole fare è possibile senza la creazione di sottoclassi e modificando gli eventi di vernice da soli.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top