[solved] QProgressbar in Zelle von QTableWidget einbauen

Alles rund um die Programmierung mit Qt
Antworten
tribari
Beiträge: 63
Registriert: 23. Juli 2008 13:31
Wohnort: Braunschweig

[solved] QProgressbar in Zelle von QTableWidget einbauen

Beitrag 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
Zuletzt geändert von tribari am 3. Dezember 2008 09:40, insgesamt 1-mal geändert.
MiKla
Beiträge: 134
Registriert: 29. Juli 2007 15:29

Beitrag von MiKla »

In der Doku steht was von

Code: Alles auswählen

void QTableWidget::setCellWidget ( int row, int column, QWidget * widget )
Sollte damit gehen.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag 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);
  };
};
MiKla
Beiträge: 134
Registriert: 29. Juli 2007 15:29

Beitrag 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
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Es ist universell, es braucht bei Mehrfachdarstellung weniger (Speicher-)Resourcen und passt auf die Anforderung mit dem Delegate.
MiKla
Beiträge: 134
Registriert: 29. Juli 2007 15:29

Beitrag von MiKla »

Das mit dem Delegate hab ich ganz übersehen/überslesen. So hast hast du natürlich Recht.

Micha
tribari
Beiträge: 63
Registriert: 23. Juli 2008 13:31
Wohnort: Braunschweig

Beitrag 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 ;)
Antworten