Icon in Zelle eines QTableView

Alles rund um die Programmierung mit Qt
Antworten
thw
Beiträge: 5
Registriert: 17. Oktober 2006 14:24
Kontaktdaten:

Icon in Zelle eines QTableView

Beitrag von thw »

Hallo zusammen,

ich grüble gerade über ein Problem, welches sich auf den ersten Blick recht einfach anhört:

Ich habe eine Sammlung von Datensätzen in einem eigenen Model (Ableitung von QAbstractTableModel). Die Daten dieses Models sollen in einem QTableView angezeigt werden. Die data()-Methode liefert je nach Index die passenden Daten aus - klappt super. Jetzt hab ich aber das Problem, dass ich (abhängig von den Daten) ein Feld als Icon darstellen will. Bisher hab ich da einfach unterschiedliche Strings zurückgegeben, aber ein Icon würde Platz sparen und macht irgendwie mehr her. Stellt sich aber die Frage: Wie bekomme ich ein Icon in einer Zelle des TableView angezeigt? Es muss ja vermutlich schon irgendwie über das Model gehen. Ich dachte mir also, dass die data()-Methode einfach den QVariant mit einem Icon belegen kann:

Code: Alles auswählen

QVariant MyModel::data(const QModelIndex& index, int role) const {
  return QIcon(":/img/icon.png");
}
Kompiliert zwar und läuft auch, nur wird da leider kein Icon angezeigt (an der Ressource liegt's definitiv nicht).
Kann mir jemand einen Tipp geben, wie man dort ein Icon anzeigt? Ich hatte eigentlich nicht erwartet, da so viel Energie reinstecken zu müssen ^^

Danke schonmal im Voraus,
thw
thw
Beiträge: 5
Registriert: 17. Oktober 2006 14:24
Kontaktdaten:

Beitrag von thw »

Okay, ich habe eine Lösung gefunden. Das Studium der Implementierung von QDirModel brachte mich darauf, mal mit diesen unterschiedlichen "Roles" herumzuspielen :)
Mein Ansatz war also im Prinzip richtig.

Sorry und trotzdem danke für's Lesen!

Aber ich habe noch eine Frage: Kann ich eine einzelne Zelle oder eine ganze Zeile eines TableViews auch modelgesteuert mit einem Tooltip versehen?

LG,
thw
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

int role = Qt::ToolTipRole ?
(2 unter Qt::DecorationRole, was ja die Lösung deines ersten Problems war) :)
Antworten