Details
-
Bug
-
Resolution: Out of scope
-
P2: Important
-
None
-
6.5.0
-
None
Description
This is working:
void ActiveItinerariesTableItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { if(index.column() == ActiveItinerariesTableModel::ColProgress) { QStyleOptionProgressBar opt; opt.initFrom(option.widget); opt.state |= QStyle::State_Horizontal; opt.maximum = 100; opt.progress = index.data().toInt(); opt.rect = option.rect; opt.text = QString::number(opt.progress) + '%'; opt.textVisible = true; opt.textAlignment = Qt::AlignCenter; option.widget->style()->drawControl(QStyle::CE_ProgressBar, &opt, painter); return; } Super::paint(painter, option, index); }
this is not:
void ActiveItinerariesTableItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { if(index.column() == ActiveItinerariesTableModel::ColProgress) { QStyleOptionProgressBar opt; opt.initFrom(option.widget); //opt.state |= QStyle::State_Horizontal; opt.maximum = 100; opt.progress = index.data().toInt(); opt.rect = option.rect; opt.text = QString::number(opt.progress) + '%'; opt.textVisible = true; opt.textAlignment = Qt::AlignCenter; option.widget->style()->drawControl(QStyle::CE_ProgressBar, &opt, painter); return; } Super::paint(painter, option, index); }
Even if QStyleOptionProgressBar::QStyleOptionProgressBar() inits state correctly to have QStyle::State_Horizontal flag set, the QStyleOption::initFrom(QWidget*) function erases it. Since every QStyleOptionProgressBar instance must be initialized, setting of QStyle::State_Horizontal flag in ctor is futile.