QSqlTableModel, QTableView und Bit-Spalte

Alles rund um die Programmierung mit Qt
Antworten
petric
Beiträge: 23
Registriert: 2. September 2008 17:42

QSqlTableModel, QTableView und Bit-Spalte

Beitrag 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
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag von pfid »

Ich würd das Model ableiten und data() überschreiben.

[edit] Checkbox geht selbstverfreilich so nicht.
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag 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
petric
Beiträge: 23
Registriert: 2. September 2008 17:42

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

Beitrag von upsala »

Es ginge über ein Delegate. Oder leichter über eine Ableitung und Überladen der Funktionen flags() und data().
petric
Beiträge: 23
Registriert: 2. September 2008 17:42

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

Beitrag von upsala »

Code: Alles auswählen

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

The Model View Architecture
Antworten