Debido a que QProgressBar para Macintosh StyleSheet no es compatible con la propiedad de formato, y luego admite el soporte multiplataforma, puede agregar una segunda capa con QLabel.
// init progress text label
if (progressBar->isTextVisible())
{
progressBar->setTextVisible(false); // prevent dublicate
QHBoxLayout *layout = new QHBoxLayout(progressBar);
QLabel *overlay = new QLabel();
overlay->setAlignment(Qt::AlignCenter);
overlay->setText("");
layout->addWidget(overlay);
layout->setContentsMargins(0,0,0,0);
connect(progressBar, SIGNAL(valueChanged(int)), this, SLOT(progressLabelUpdate()));
}
void MainWindow::progressLabelUpdate()
{
if (QProgressBar* progressBar = qobject_cast<QProgressBar*>(sender()))
{
QString text = progressBar->format();
int precent = 0;
if (progressBar->maximum()>0)
precent = 100 * progressBar->value()/progressBar->maximum();
text.replace("%p", QString::number(precent));
text.replace("%v", QString::number(progressBar->value()));
QLabel *label = progressBar->findChild<QLabel *>();
if (label)
label->setText(text);
}
}
Creo que me expliqué mal (Si es así, lo siento). Quiero agregar más texto a la barra. Como solo muestra el porcentaje. – Kazuma
editado ......... –
En Mac-OSX, el texto en una barra de QProgress parece imposible. – TimZaman