Non so come modificare il colore del testo parzialmente nella barra di avanzamento quando il suo valore diventa quasi del 50%. Questo effetto viene automaticamente nella barra di avanzamento dello stile di fusione (immagine sotto). Qualcuno sa come è fatto?Come cambiare il colore del testo di un QProgressBar con il suo valore?
risposta
Troppo pigro per scrivere lavorare codice di esempio, e tanto meno fare uno screenshot. Neanche per 50 ripetizioni. :-)
Tuttavia, la domanda era piuttosto interessante. Non avevo idea di come un testo così colorato potesse essere fatto. Quindi ho controllato: http://qt.gitorious.org/qt/qtbase/blobs/stable/src/widgets/styles/qfusionstyle.cpp Riga 1450ff (http://qt.gitorious.org/qt/qtbase/blobs/stable/src/widgets/styles/qfusionstyle.cpp#line1450).
QRegion rightRect = rect;
rightRect = rightRect.subtracted(leftRect);
painter->setClipRegion(rightRect);
painter->setPen(flip ? alternateTextColor : textColor);
painter->drawText(rect,
bar->text,
QTextOption(Qt::AlignAbsolute|
Qt::AlignHCenter|
Qt::AlignVCenter));
if (!leftRect.isNull())
{
painter->setPen(flip ? textColor : alternateTextColor);
painter->setClipRect(leftRect);
painter->drawText(rect,
bar->text,
QTextOption(Qt::AlignAbsolute|
Qt::AlignHCenter|
Qt::AlignVCenter));
}
Fondamentalmente il testo viene disegnato due volte nello stesso rettangolo. Ogni volta con un ritaglio appropriato. Facile se sai come. :-)
È possibile utilizzare fogli di stile sul contenitore Widget:
myMainWidget.setStyleSheet(QString("QProgressBar {color: red}"));
Questo non è corretto ... –
Dal mio punto di vista il migliore, e probabilmente il più facile, modo per farlo è quello di cambiare il pallet per il widget QProgressBar:
QPalette palette = progressBar->palette()
palette.setColor(QPalette::Text, textColor)
palette.setColor(QPalette::HighlightedText, textColor)
progressBar->setPalette(palette)
Che problemi hai con implementazione, che descriveva nel link fornito? –
Quindi tu proponi qualcuno a scrivere codice al posto tuo? I fogli di stile non ti aiuteranno. È un buon punto per imparare le basi di Qt. –
Qual è la domanda? Qualcuno sa per certo come è fatto. Molto probabilmente colui che ha scritto lo stile Fusion. Ma cosa vuoi ** tu ** vuoi sapere? – Greenflow