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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QProgressBar делегат  (Прочитано 4360 раз)
LeX
Гость
« : Октябрь 15, 2009, 18:39 »

Есть ли готовый пример делегата на основе QProgressBar?
Необходимо чтобы он постоянно отображался и обновлялся при обновлении данных в QTableView?
Сам прогресс бар будет статическим, то есть он нужен только для отображения статуса процесса в таблице Непонимающий
Записан
Rcus
Гость
« Ответ #1 : Октябрь 15, 2009, 20:40 »

Можно же просто через стиль рисовать QStyle::CE_ProgressBar, но нужно переопределять еще sizeHint чтобы хватало места.
Другой путь принят в ksysguard (see http://websvn.kde.org/trunk/KDE/kdebase/workspace/libs/ksysguard/processui/ksysguardprocesslist.cpp?view=markup line 124). Удобен тем что возникает меньше проблем в выделением.
Записан
LeX
Гость
« Ответ #2 : Октябрь 16, 2009, 08:55 »

Можно же просто через стиль рисовать QStyle::CE_ProgressBar, но нужно переопределять еще sizeHint чтобы хватало места.

В общем я метод Paint переписал создав своего делегата. Остальные методы не переопределял, правильно ли делегат будет работать?
Вот собственно код:
Код:
void ProgressBarDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
QVariant value = index.model()->data(index,Qt::DisplayRole);
QStyleOptionProgressBar Option;
Option.rect = option.rect;
Option.maximum=100;
Option.minimum=0;
Option.progress=int(value.toInt()/100);
Option.text=QString().setNum(value.toInt()/100)+"%";
Option.textVisible=true;
QApplication::style()->drawControl(QStyle::CE_ProgressBar,&myOption,painter);
}

Мне он нужен для отображения данных в таблице (только статика).
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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