Zellfüllendes Bild in QTableView

Alles rund um die Programmierung mit Qt
Antworten
NoRulez
Beiträge: 208
Registriert: 19. Juni 2007 15:43

Zellfüllendes Bild in QTableView

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

Beitrag 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?
NoRulez
Beiträge: 208
Registriert: 19. Juni 2007 15:43

Beitrag 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
NoRulez
Beiträge: 208
Registriert: 19. Juni 2007 15:43

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

Beitrag von upsala »

Auf was für Flags willst du reagieren? Oder meinst du Model-Daten?
NoRulez
Beiträge: 208
Registriert: 19. Juni 2007 15:43

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

Beitrag von upsala »

Code: Alles auswählen

switch (index.data().toInt()) {
  case 1: ...
  case 2: ...
}
Schon mal versucht eine DecorationRole an die Header zu übergeben?
NoRulez
Beiträge: 208
Registriert: 19. Juni 2007 15:43

Beitrag von NoRulez »

Danke der Tip mit DecorationRole hat funktioniert.
Nur die HeaderViews bekomme ich nicht hin

LG NoRulez
Antworten