How to change the color of the text of a QProgressBar with its value?

c++, progress-bar, qt

Solution

I had no idea how such a two colored text could be done, so I checked:

- QFusionStyle::drawControl source code (Line 1452)

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));
}

Basically the text is drawn two times into the same rectangle. Each time with an appropriate clipping.

Problem

I don't know how to change the color of the text partially in the progress bar when its value becomes nearly 50%. This effect comes automatically in the fusion style progress bar (picture below). Does anyone know how this is done ?

Original source