Seite 1 von 1
Zellfüllendes Bild in QTableView
Verfasst: 9. Februar 2009 14:23
von NoRulez
Hey @all,
weiß jemand oder kann mir ein beispiel geben wie ich ein Zell füllendes bild (40 x 40) mit Delegates in eine Zelle bekomme? Habs schon mit QImage probiert, aber da bleibt auf jeder seite ein weißer rand.
Vielen Dank im Voraus
LG NoRulez
Verfasst: 9. Februar 2009 17:21
von upsala
Du hast einen Funktionierenden Code, der nur noch einen weißen Rand erzeugt und wir sollen dir einen komplett neuen Code schreiben nur um diese Kleinigkeit zu beheben? Sonst noch Wünsche?
Verfasst: 9. Februar 2009 17:28
von NoRulez
wie meinen?
Ich habe keinen funktionierenden code, ich habe nur folgendes um das Bild zu setzen:
Code: Alles auswählen
_pTableView->model()->setData(_pTableView->model()->index(row, 0), QImage(":/images/background.png"), Qt::DecorationRole);
aber da ich per status ein anderes bild brauche dachte ich, ich sollte es mit einem Delegate lösen. Nur kenne ich mich mit delegates nicht aus bzw. hatte ich noch nie was mit delegates gemacht.
LG NoRulez
Verfasst: 9. Februar 2009 18:24
von NoRulez
ok, ich denke wie folgt sollte es passen, funktionieren tut es erstmals. Nur wie kann ich im Delegate automatisch auf werte reagieren? Meine damit das ich bei bestimmten Flags das bild austausche?
Code: Alles auswählen
MyDelegate::MyDelegate(QObject *parent) : QItemDelegate(parent) {
}
void MyDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const {
QItemDelegate::paint(painter, option, index);
painter->drawImage(option.rect.x(),option.rect.y(), QImage(":/images/bg1.png"));
/*
painter->drawImage(option.rect.x(),option.rect.y(), QImage(":/images/bg2.png"));
painter->drawImage(option.rect.x(),option.rect.y(), QImage(":/images/bg3.png"));
painter->drawImage(option.rect.x(),option.rect.y(), QImage(":/images/bg4.png"));
*/
}
QSize MyDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const {
return QSize(45, 45);
}
LG NoRulez
Verfasst: 9. Februar 2009 19:42
von upsala
Auf was für Flags willst du reagieren? Oder meinst du Model-Daten?
Verfasst: 9. Februar 2009 21:14
von NoRulez
Ja sorry,
ich meinte model daten, also bei 1 beispielsweise ein rotes bild und bei 2 grünes, ...
Weiters habe ich noch keinen Weg gefunden die QHeaderViews (horizontal als auch vertical) mit einem Bild zu hinterlegen. Bei mir sehe ich immer nur ein kleines Icon, habe es auch schon mit qss/css probiert
LG NoRulez
Verfasst: 9. Februar 2009 21:42
von upsala
Code: Alles auswählen
switch (index.data().toInt()) {
case 1: ...
case 2: ...
}
Schon mal versucht eine DecorationRole an die Header zu übergeben?
Verfasst: 9. Februar 2009 22:00
von NoRulez
Danke der Tip mit DecorationRole hat funktioniert.
Nur die HeaderViews bekomme ich nicht hin
LG NoRulez