Sto utilizzando ubuntu 11.04. Questo è ciò che i miei barre di avanzamento assomigliano:Cambia il colore di una QProgressBar
sto mostrando le barre di avanzamento in una finestra di elaborazione in batch (uno per dato lotto) e vorrebbe usarli come indicatore di stato (verde mentre tutto è andando bene, rosso in caso di errori, ...).
Ho provato diversi suggerimenti, compresi quelli fatti a this domande quasi identiche. Sfortunatamente, non ho potuto farlo funzionare e lo documentation sulla personalizzazione di QProgressBars non mi aiuta neanche io, quindi sarei molto grato per qualsiasi suggerimento su cosa sto facendo male.
Ho sottoclassi il QProgressBar come suggerito e ho provato a usare i fogli di stile e la tavolozza (non allo stesso tempo ma come alternative). Con i fogli di stile, non riesco a farlo apparire come le normali barre di avanzamento. Cambiare il colore è davvero tutto ciò che voglio fare, quindi ho pensato che sarebbe stato molto più semplice farlo usando una tavolozza invece di un foglio di stile, ma con la tavolozza non succede nulla.
Ecco una delle versioni che ho provato per la tavolozza:
#include "myprogressbar.h"
#include <QtGui/QPalette>
MyProgressBar::MyProgressBar(QWidget *parent) :
QProgressBar(parent)
{}
void MyProgressBar::onProgress(int value, int maximum, QString phase)
{
setMaximum(maximum);
setValue(value);
setFormat(phase);
QPalette p = this->palette();
p.setColor(QPalette::Highlight, QColor(Qt::green));
this->setPalette(p);
}
...
Ho provato anche la versione suggerita here, ma che non ha aiutato neanche.
Documentazione sulla '' palette' e setPalette' dice: * Attenzione: Non utilizzare questa funzione in combinazione con Qt Style Sheets. * Forse questo è il problema? In quel caso potresti provare 'style' e' setStyle'. Ma è solo una mia supposizione. – Frg
Qual è il tuo sistema operativo? Come appare la barra di avanzamento? – Dmitriy
Se si usano i fogli di stile, è necessario impostare * tutto * non solo un singolo elemento. Mostraci il foglio di stile che hai provato. – koan