Seite 1 von 1

Problem mit QSqlTableModel

Verfasst: 2. Dezember 2009 10:08
von bob446
Hallo ,
ich habe folgendes Problem:
ich verwende ein QSqlTableModel zusammen mit meiner Datenbank.
Meine angezeigte Tabelle besteht aus insgesamt 5 Feldern, davon möchte ich allerdings nur 2 anzeigen lassen, die anderen sollen bei jedem Item gespeichert werden, um später verwendet werden zu können. Was muss ich dazu tun? SetData vom QSqlTableModel überschreiben? Bzw wie werden dem Model die Daten der Tabelle mitgeteilt? Ich finde leider keine Erklärung dazu.
mfg

Verfasst: 2. Dezember 2009 10:17
von franzf
Nicht getestet:
Über QSqlTableModel::fieldIndex() den index deiner Spalte finden, und über QTableView::setColumnHidden dann verstecken.
Die Daten der Spalte sind immer noch vorhanden, werden aber nicht angezeigt.

Verfasst: 2. Dezember 2009 10:52
von bob446
Ok vielen Dank ! Ich habe es mal an einem kleinen Beispiel getestet, die Daten sind vorhanden und man kann auf sie zugreifen.
Allerdings habe ich noch ein Problem beim Zugriff auf die Daten nach einem drag&drop Vorgang. Muss ich dazu die MimeData-Methode überschreiben? Scheinbar wird entweder der nicht angezeigte Teil nicht übergeben oder ich greife noch falsch auf die Werte zu (was ich vermute).
Hier mal der Ausschnitt zum Decodieren der Dropped Data :

Code: Alles auswählen

QDataStream stream(&itemData , QIODevice::ReadOnly);

			QVector<QMap<int, QVariant> > data;
			while (!stream.atEnd()) {
				int r, c;
				QMap<int, QVariant> v;
				stream >> r >> c >> v;
				data.append(v);
			}
Vllt kann mir da jemand helfen. Bin für jede Hilfe dankbar :)