- painter->setPen(option.palette.color(QPalette::Mid));
- painter->drawText(r2, Qt::AlignLeft | Qt::AlignVCenter , index.data(Qt::UserRole).toString());
- painter->restore();
- } else if (index.column() == 2) {
- // Set up a QStyleOptionProgressBar to precisely mimic the
- // environment of a progress bar.
- QStyleOptionProgressBar progressBarOption;
- progressBarOption.state = option.state;
- progressBarOption.direction = QApplication::layoutDirection();
- QRect rect = option.rect;
- if (option.state & (QStyle::State_Selected)) {
- painter->setPen(option.palette.color(QPalette::HighlightedText));
- painter->fillRect(rect, option.palette.highlight());
+ painter->drawText(r1, Qt::AlignLeft | Qt::AlignTop , index.data(Qt::UserRole).toString());
+ int progress = index.data(Qt::UserRole + 3).toInt();
+ if (progress > 0 && progress < 100) {
+ // draw progress bar
+ QColor color = option.palette.alternateBase().color();
+ QColor fgColor = option.palette.text().color();
+ color.setAlpha(150);
+ fgColor.setAlpha(150);
+ painter->setBrush(QBrush(color));
+ painter->setPen(QPen(fgColor));
+ int width = qMin(200, r1.width() - 4);
+ QRect bgrect(r1.left() + 2, option.rect.bottom() - 6 - textMargin, width, 6);
+ painter->drawRoundedRect(bgrect, 3, 3);
+ painter->setBrush(QBrush(fgColor));
+ bgrect.adjust(2, 2, 0, -1);
+ painter->setPen(Qt::NoPen);
+ bgrect.setWidth((width - 2) * progress / 100);
+ painter->drawRect(bgrect);
+ } else {
+ r1.setBottom(opt.rect.bottom());
+ r1.setTop(r1.bottom() - mid);
+ painter->drawText(r1, Qt::AlignLeft | Qt::AlignBottom , index.data(Qt::UserRole + 5).toString());