Seite 1 von 1

Icon in Zelle eines QTableView

Verfasst: 6. Juni 2009 20:08
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

Verfasst: 6. Juni 2009 21:17
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

Verfasst: 6. Juni 2009 22:38
von franzf
int role = Qt::ToolTipRole ?
(2 unter Qt::DecorationRole, was ja die Lösung deines ersten Problems war) :)