Wie den Style einer ProgressBar in QTableWidget setzen?
Verfasst: 28. Oktober 2009 09:46
Hallo,
ich habe eine QTableWidget mit vielen QProgressBars, der grobe Aufbau ist im Code-Schnippsel zu sehen.
Jetzt sehe ich leider nicht welche Zelle ich selektiert habe, nur an den fett gedruckten Zeilen- und Spalten-Labels. Wie bekomme ich hin, das zum Beispiel der Rand der Progressbar eine andere Farbe bekommt, wenn ich diese in der Tabelle selektiert habe?
mfg =>dnb<=
ich habe eine QTableWidget mit vielen QProgressBars, der grobe Aufbau ist im Code-Schnippsel zu sehen.
Jetzt sehe ich leider nicht welche Zelle ich selektiert habe, nur an den fett gedruckten Zeilen- und Spalten-Labels. Wie bekomme ich hin, das zum Beispiel der Rand der Progressbar eine andere Farbe bekommt, wenn ich diese in der Tabelle selektiert habe?
mfg =>dnb<=
Code: Alles auswählen
class TableItem : public QTableWidgetItem {
Q_OBJECT
public:
TableItem()
: QTableWidgetItem( "" ) {
}
};
class TableItemDelegate : public QStyledItemDelegate {
Q_OBJECT
public:
TableItemDelegate( QObject* parent = 0x0 )
: QStyledItemDelegate( parent ) {}
void paint( QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index ) const {
QStyleOptionProgressBarV2 progressBarOption;
progressBarOption.rect = option.rect;
progressBarOption.minimum = 0;
progressBarOption.maximum = 100;
progressBarOption.progress = 45;
progressBarOption.text = QString::number( 45 ) + "%";
progressBarOption.textVisible = true;
QApplication::style()->drawControl( QStyle::CE_ProgressBar, &progressBarOption, painter );
return;
}
};
class Table : public QTableWidget {
Q_OBJECT
public:
Table( QWidget* parent )
: QTableWidget( parent ) {
this->setItemDelegate( new TableItemDelegate( this ) );
this->setItem( 0, 0, new TableItem() );
this->setItem( 0, 1, new TableItem() );
this->setItem( 1, 0, new TableItem() );
this->setItem( 1, 1, new TableItem() );
}
};