Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: stima от Ноябрь 21, 2011, 18:59



Название: QProgressbar
Отправлено: stima от Ноябрь 21, 2011, 18:59
Можно ли как-то изменять ячейки прогресса, например поставить делегат.

Вообще необходимо, к примеру, чтобы первая ячейка была красного цвета, последняя зеленого и в середине голубого, возможно ли такое. Ткните носом куда почитать.


Название: Re: QProgressbar
Отправлено: kambala от Ноябрь 21, 2011, 19:21
void QProgressBar::initStyleOption ( QStyleOptionProgressBar * option ) const [protected]


Название: Re: QProgressbar
Отправлено: stima от Ноябрь 22, 2011, 15:17
Никак не вьеду где его опредилять и что с ним делать. И еще есть stylesheet, но нужно изменить цвет текста при более 50%. Сделал так:

Код:
ProgressBar::ProgressBar(QWidget *parent) : QProgressBar(parent) {
    setStyleSheet("ProgressBar { margin-left: 11px; margin-right: 11px; border-top: 1px solid #292929;"
                  "border-bottom: 1px solid #292929; background: #0c0c0c;"
                  "border-radius: 7px; color: white; height: 16px; padding: 5px;"
                  "font-size: 14px; font-family: \"Myriad Pro\"; color: white; }" );
    setAlignment(Qt::AlignCenter);

    setMinimum(0);
    setMaximum(100);

    connect(this, SIGNAL(valueChanged(int)), this, SLOT(valueChangedSlot(int)));
}

void ProgressBar::valueChangedSlot(int value) {
    if ( value >= 50 ) {
        setStyleSheet("ProgressBar { margin-left: 11px; margin-right: 11px; border-top: 1px solid #292929;"
                      "border-bottom: 1px solid #292929; background: #0c0c0c;"
                      "border-radius: 7px; color: white; height: 16px; padding: 5px;"
                      "font-size: 14px; font-family: \"Myriad Pro\"; color: black; }" );
    }
}

Но это как-то через попу. Как это сделать красивее?


Название: Re: QProgressbar
Отправлено: kosya от Ноябрь 29, 2011, 20:29
а что не так? css не волшебник, мысли читать не умеет, про 50% ничего не знает.


Название: Re: QProgressbar
Отправлено: iroln от Ноябрь 29, 2011, 21:40
Всегда хотел спросить по прогрессбару, но тему создавать не было желания. Можно как-то на прогрессбаре отображать процесс, который может продолжаться неопределённое время? Вроде туда-сюда гонять индикатор, как это делается в pv (http://handynotes.ru/2010/01/unix-tool-pipe-viewer.html)

Кстати, я тоже как-то задавался таким же вопросом, как автор темы. Мне надо было раскрашивать прогрессбар в разные цвета в зависимости от состояния наблюдаемого процесса и запоминать эти цвета на временной шкале. То есть прогрессбар получается разноцветным. Так и не осилил, как это сделать в QProgressBar, написал просто свой виджет.


Название: Re: QProgressbar
Отправлено: GreatSnake от Ноябрь 30, 2011, 09:57
Можно как-то на прогрессбаре отображать процесс, который может продолжаться неопределённое время? Вроде туда-сюда гонять индикатор, как это делается в pv (http://handynotes.ru/2010/01/unix-tool-pipe-viewer.html)

Цитата: assistant
If minimum and maximum both are set to 0, the bar shows a busy indicator instead of a percentage of steps. This is useful, for example, when using QFtp or QNetworkAccessManager to download items when they are unable to determine the size of the item being downloaded.


Название: Re: QProgressbar
Отправлено: iroln от Ноябрь 30, 2011, 12:34
GreatSnake, вот спасибо. Ну я и балда, доку не дочитал до конца! :)