[gelöst] Icon in QTableView abhängig vom Wert in Model
Verfasst: 24. August 2012 11:17
Hi,
ich habe ein folgendes Problem:
1. ich habe ein QTableView das an ein MyModel (abgeleitet von QSqlTableModel) gebunden ist;
2. ich versuche damit 4 Informationen anzuzeigen, die aus einer Datenbank kommen: Kürzel, Titel, Untertitel, Gelesen
3. Das Feld 'Gelesen' ist boolean (eigentlich tynint(4) in mysql).
Was ich aber tun will ist folgendes: je nach dem Wert von 'Gelesen' möchte ich, dass in der ersten Spalte (Kürzel) das entsprechende Icon angezeigt wird.
Ich bin mit Qt nicht sehr bewandert, aber ich tue folgendes: ich leite MyModel von QSqlTableModel ab und überschreibe data. Wenn ich folgendes habe:
Erscheint, wie erwartet, ein Icon in der ersten Spalte. Aber natürlich immer das gleiche.
Die Frage ist also: wie kann ich da auf den Wert der Spalte 'Gelesen' zugreifen und Qt sagen: 'je nach dem Wert, setze das entsprechende Icon!'
danke im voraus
PS: ich möchte ein ItemDelegate vermeiden, weil ich die Daten nicht editieren will.
ich habe ein folgendes Problem:
1. ich habe ein QTableView das an ein MyModel (abgeleitet von QSqlTableModel) gebunden ist;
2. ich versuche damit 4 Informationen anzuzeigen, die aus einer Datenbank kommen: Kürzel, Titel, Untertitel, Gelesen
3. Das Feld 'Gelesen' ist boolean (eigentlich tynint(4) in mysql).
Was ich aber tun will ist folgendes: je nach dem Wert von 'Gelesen' möchte ich, dass in der ersten Spalte (Kürzel) das entsprechende Icon angezeigt wird.
Ich bin mit Qt nicht sehr bewandert, aber ich tue folgendes: ich leite MyModel von QSqlTableModel ab und überschreibe data. Wenn ich folgendes habe:
Code: Alles auswählen
QVariant MyTableModel::data(const QModelIndex &index, int role) const
{
if (!index.isValid())
return QVariant();
QVariant value = QSqlTableModel::data(index, role);
QIcon icon_yes = QIcon(":/icons/icons/Restart.png");
QIcon icon_no = QIcon(":/icons/icons/Close.png");
if (role == Qt::DecorationRole && index.column()==0){
return icon_yes;
}
return value;
}
Die Frage ist also: wie kann ich da auf den Wert der Spalte 'Gelesen' zugreifen und Qt sagen: 'je nach dem Wert, setze das entsprechende Icon!'
danke im voraus
PS: ich möchte ein ItemDelegate vermeiden, weil ich die Daten nicht editieren will.