QSqlQueryModel spalten ausblenden

Alles rund um die Programmierung mit Qt
Antworten
miki11
Beiträge: 30
Registriert: 27. Oktober 2008 13:32

QSqlQueryModel spalten ausblenden

Beitrag von miki11 »

Ich habe QSqlQueryModel abgeleitet und QSqlQueryModel::data neu implementiert.
Dort gebe ich für eine Spalte die Farbe zurück. Die Farbe steht in eine andere Spalte. Diese zweite Spalte soll natürlich nicht in der QTableView erscheinen.
Kann ich diese Spalte verstecken in der Model?

Z.Zt. habe ich bei QTableView die Spalte versteckt, aber das würde ich gerne bereits im Model erledigen wollen. Diese Spalte ist schließlich nur für Qt::TextColorRole zuständig, nicht aber für Qt::DisplayRole.

Ich hatte versucht einen nicht validen QVariant zurück zu geben, jedoch erschien dann immer noch eine leere Spalte.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Wieviele Spalten das Model und die View haben, wird über den columnCount zurückgegeben.

Normalerweise würde man Zusatzinformationen über eine andere role zurückgeben. In diesem Fall müsstest du dir aber fast ein neues Model schreiben, um eine sinnvolle Lösung zu bekommen.

Ein Ausblenden der Spalte im QTableView ist hier wesentlich einfacher.
miki11
Beiträge: 30
Registriert: 27. Oktober 2008 13:32

Beitrag von miki11 »

OK, danke für die schnelle Antwort.

War eine Frage wert, hätte ja sein können, daß es eine einfache Lösung vorhanden ist und ich sie nur nicht sehe ;-)
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag von pfid »

Bspw:

Code: Alles auswählen

   view->setColumnHidden(model->fieldIndex("feldname"), true);
miki11
Beiträge: 30
Registriert: 27. Oktober 2008 13:32

Beitrag von miki11 »

@pfid

ich nutze

Code: Alles auswählen

View->hideColumn(model->record().indexOf("id"));
deine zeile wird mit eine Fehlermeldung quitiert:

Code: Alles auswählen

error: 'class QSqlQueryModel' has no member named 'fieldIndex'
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag von pfid »

miki11 hat geschrieben:@pfid

ich nutze

Code: Alles auswählen

View->hideColumn(model->record().indexOf("id"));
deine zeile wird mit eine Fehlermeldung quitiert:

Code: Alles auswählen

error: 'class QSqlQueryModel' has no member named 'fieldIndex'
Ups, verpeilt dass du ein Query-Model und kein Table-Model hast.
Antworten