Seite 1 von 1
[solved] QProgressbar in Zelle von QTableWidget einbauen
Verfasst: 2. Dezember 2008 13:46
von tribari
Hallo allerseits,
ich wollte mal fragen, ob es eine Möglichkeit gibt eine QProgressbar in einer Zelle von meinem QTableWidget einzubauen...
Ich habe schon herausgefunden das man QItemDelegate sowas realisieren könnte... aber wie genau das nun funktionieren soll ist mir noch ein Rätsel.
Vielleicht ist hier ja wer so nett und hat einen Anhaltspunkt, wie ich das am besten mache?
lg
Tribari
Verfasst: 2. Dezember 2008 19:54
von MiKla
In der Doku steht was von
Code: Alles auswählen
void QTableWidget::setCellWidget ( int row, int column, QWidget * widget )
Sollte damit gehen.
Verfasst: 2. Dezember 2008 20:11
von upsala
Code: Alles auswählen
class Delegate : public QItemDelegate
{
Q_OBJECT
public:
Delegate(QObject *parent = 0) : QItemDelegate(parent) {};
~Delegate() {};
void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
QStyleOptionProgressBarV2 opt;
opt.direction=option.direction;
opt.fontMetrics=option.fontMetrics;
opt.palette=option.palette;
opt.rect=option.rect;
opt.state=option.state;
opt.minimum=0;
opt.maximum=100;
opt.progress=qMax(opt.minimum, qMin(opt.maximum, index.data().toInt()));
QApplication::style()->drawControl(QStyle::CE_ProgressBar, &opt, painter, 0);
};
};
Verfasst: 2. Dezember 2008 20:15
von MiKla
@upsala
Ist das für ein QTableWidget nicht übertrieben? Bei eine QTableView muss man das so machen, wie in Deinem Beispiel, aber bei einem QTableWidget!
Micha
Verfasst: 2. Dezember 2008 20:35
von upsala
Es ist universell, es braucht bei Mehrfachdarstellung weniger (Speicher-)Resourcen und passt auf die Anforderung mit dem Delegate.
Verfasst: 2. Dezember 2008 20:44
von MiKla
Das mit dem Delegate hab ich ganz übersehen/überslesen. So hast hast du natürlich Recht.
Micha
Verfasst: 3. Dezember 2008 09:39
von tribari
danke für die vielen Antworten ... also ich möchte die Progressbar ja nur in einer Zelle haben um den Status von Prozessen anzuzeigen... mir reicht da anscheinend die Variante mit setCellWidget aus
Mal schauen wie komplex das bei mir noch wird, und ob ich am ende dann evtl. doch noch auf das Delegate umsteigen muss...
Aber danke für die Hilfe
