Russian Qt Forum
Ноябрь 24, 2024, 06:50 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QProgressbar  (Прочитано 6927 раз)
stima
Гость
« : Ноябрь 21, 2011, 18:59 »

Можно ли как-то изменять ячейки прогресса, например поставить делегат.

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

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Ноябрь 21, 2011, 19:21 »

void QProgressBar::initStyleOption ( QStyleOptionProgressBar * option ) const [protected]
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
stima
Гость
« Ответ #2 : Ноябрь 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; }" );
    }
}

Но это как-то через попу. Как это сделать красивее?
Записан
kosya
Гость
« Ответ #3 : Ноябрь 29, 2011, 20:29 »

а что не так? css не волшебник, мысли читать не умеет, про 50% ничего не знает.
Записан
iroln
Гость
« Ответ #4 : Ноябрь 29, 2011, 21:40 »

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

Кстати, я тоже как-то задавался таким же вопросом, как автор темы. Мне надо было раскрашивать прогрессбар в разные цвета в зависимости от состояния наблюдаемого процесса и запоминать эти цвета на временной шкале. То есть прогрессбар получается разноцветным. Так и не осилил, как это сделать в QProgressBar, написал просто свой виджет.
« Последнее редактирование: Ноябрь 29, 2011, 21:46 от iroln » Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #5 : Ноябрь 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.
Записан

Qt 5.11/4.8.7 (X11/Win)
iroln
Гость
« Ответ #6 : Ноябрь 30, 2011, 12:34 »

GreatSnake, вот спасибо. Ну я и балда, доку не дочитал до конца! Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.055 секунд. Запросов: 23.