Seite 1 von 1

QSqlTableModel, QTableView und Bit-Spalte

Verfasst: 6. Mai 2009 12:52
von petric
Hallo,

ich habe eine MySQL Datenbanktabelle in der eine Spalte vom Typ TinyInt(1) ist. Nun will ich, dass diese Spalte, wenn per QSqlTableModel und QTableView ausgegeben wird als Ja/Nein (oder Checkbox) dargestellt wird. Bisher kommt da nur immer 0 oder 1.

Gibt es da eine Moeglichkeit ohne dass ich dazu QTableView ableiten muss ?

Ein eigenes Delegate reicht da nicht, da (laut Doku) das nur beim Bearbeiten greift, oder ?

Beispiel:

Code: Alles auswählen

QSqlTableModel *model = new QSqlTableModel (this);
model->setTable ("Tabelle");
QTableView *view = new QTableView (this);
view->setModel (model);
model->select ();
Oder muss ich dazu die MySQL-Tabelle anders definieren ?

Gruss

Verfasst: 6. Mai 2009 13:02
von pfid
Ich würd das Model ableiten und data() überschreiben.

[edit] Checkbox geht selbstverfreilich so nicht.

Verfasst: 6. Mai 2009 13:25
von AuE
Ohne die Methode data zu überschreiben ginge es über sql syntax....
Aber dann via QSqlQueryModel

Code: Alles auswählen

model.setQuery("")

Code: Alles auswählen

SELECT DISTINCT Freigabe = case Freigabe when 0 then 'nein' when 1 then 'ja' else 'not defined' end , .... andere spalten ... from tabelle

Verfasst: 6. Mai 2009 15:45
von petric
Hallo,

leider brauche ich QSql(Relational)TableModel, da ich 1. auch editiere und 2. Relations verwende. Ausserdem sind da noch einige addMapping(s) in Gebrauch.

Gruss

Verfasst: 6. Mai 2009 15:47
von upsala
Es ginge über ein Delegate. Oder leichter über eine Ableitung und Überladen der Funktionen flags() und data().

Verfasst: 6. Mai 2009 18:43
von petric
Hallo,

ich dachte die Delegate(s) kommen nur dann zum Zuge, wenn in der QTableView editiert werden soll (d.h. nach Doppelclick).

Ich schau mir das mal genauer an.

Gruss

Verfasst: 6. Mai 2009 18:52
von upsala

Code: Alles auswählen

void QAbstractItemDelegate::paint ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) const 
und

The Model View Architecture