Seite 1 von 1

QSqlQueryModel spalten ausblenden

Verfasst: 6. Januar 2010 11:31
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.

Verfasst: 6. Januar 2010 12:24
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.

Verfasst: 6. Januar 2010 13:01
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 ;-)

Verfasst: 6. Januar 2010 13:10
von pfid
Bspw:

Code: Alles auswählen

   view->setColumnHidden(model->fieldIndex("feldname"), true);

Verfasst: 6. Januar 2010 13:53
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'

Verfasst: 6. Januar 2010 16:55
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.