Индикатор выполнения с другим цветом текста вокруг фронта выполнения?

Как можно получить следующий эффект для текста в QProgressBar из Qt? :

Текст индикатора выполнения с разными цветами вокруг передней части индикатора выполнения

Идея в том, что я должен иметь более яркий цвет в левой части индикатора выполнения.


person andreihondrari    schedule 13.12.2012    source источник
comment
Внешний вид индикатора выполнения очень сильно зависит от стиля виджета, который является пользовательской настройкой (темой). Если вы хотите создавать свои собственные эффекты, вам нужно реализовать индикатор выполнения самостоятельно. Это просто.   -  person ypnos    schedule 13.12.2012
comment
Я подумал о перекрытии двух текстовых слоев и связывании маски с одним из текстовых слоев, который имеет те же размеры, что и область заливки. Это ты имел в виду?   -  person andreihondrari    schedule 13.12.2012
comment
Я не слежу за тобой. Что ты имеешь в виду?   -  person andreihondrari    schedule 13.12.2012
comment
Вы получаете больше помощи с вашими вопросами, когда вы принимаете ответы и голосуете за свои предыдущие вопросы.   -  person ypnos    schedule 13.12.2012
comment
Ну, я не хотел сказать, что вы должны ставить мне лично +1 за каждое высказывание.   -  person ypnos    schedule 14.12.2012


Ответы (1)


Я бы сделал индивидуальный рисунок следующим образом:

  1. Получите свой собственный класс индикатора выполнения из QLabel.

  2. Перезапишите функцию paintEvent().

  3. В paintEvent() начните рисовать с помощью QPainter:

    • draw the secondary background rectangle
    • нарисуйте текст вторичным цветом с помощью drawText()
    • нарисовать первый фоновый прямоугольник (перерисовывая первую часть текста)
    • нарисуйте текст первого цвета внутри прямоугольника, соответствующего первому прямоугольнику фона: http://qt-project.org/doc/qt-4.8/qpainter.html#drawText-11

Вы должны получить то, чего хотите достичь. Из-за двойной буферизации Qt по умолчанию вы не должны наблюдать мерцание.

person ypnos    schedule 14.12.2012