QTableView

Alles rund um die Programmierung mit Qt
Antworten
Stryder
Beiträge: 9
Registriert: 28. Juli 2011 10:32

QTableView

Beitrag von Stryder »

Hey Leutz,

Ich möchte euch erst meine Zeichnung zeigen, dann mein Problem an den Kopf werfen! :cry:

Code: Alles auswählen

// ================================================================================
// | Name       | Wert 1 | Wert 2 | Wert 3 | Wert 4 | INS | Wert 5 | Wert 6 | INS |
// |------------|--------|--------|--------|--------|-----|--------|--------|-----|
// | Max Muster | 2      | 5      | 1      | 3      | 11  | 7      | 9      | 16  |
// |------------|--------|--------|--------|--------|-----|--------|--------|-----|
// | Musterhaus | 6      | 1      | 5      | 0      | 12  | 6      | 3      | 9   |
// |------------|--------|--------|--------|--------|-----|--------|--------|-----|
// |            |        |        |        |        |     |        |        |     |
// |------------|--------|--------|--------|--------|-----|--------|--------|-----|
Allgemein
Der Typ hat 3 Zeilen für sich (können auch noch 4 werden)

1. Spalte
Row 1: Sein Name und Nachname aus einer Tabelle in der Datenbank namens employee
Row 2: Sein Wohntort aus einer Tabelle in der Datenbank namens city
Row 3: Leer, gehört aber trotzdem zu dem

2. - 5. Spalte und 7. - 8. Spalte
Diese Daten kommen aus einer Tabelle in einer Datenbank namens values

INS (=Insgesamt)
Zählt die Werte aus der Tabelle values, diese INS Spalte verschiebt sich aber häufig also müsste ich entweder
haufen Tabellen anlegen oder halt wie ich nach einer anderen möglichkeit suchen... !

Zu meinen Problem ...
TableView scheint meiner Meinung nach nicht ganz die wahre Lösung zu sein, das mit den Spalten einfügen funktioniert halt nicht wegen dem QSQLRelationalTableModel
Wie bekomme ich das in der 1. Spalte hin? Nach den 3 Rows, soll schließlich dann auch der nächste employee kommen.

Wäre für eine Lösung sehr dankbar ;-)

Mir würde ja schon reichen was ich anstatt von TableView nehmen soll (falls dieses wirklich nicht geht) und welches Model ... soll halt schon wie QSqlRelationalTableModel sein,
weil die Werte aus der Tabelle values halt ID's aus einer weiteren Tabelle in der Datenbank entsprechen....

Also ist es halbwegs verständlich? Hab mir da mühe gegeben :D
Würde auch die SuFu nutzen wenn ich weiss wonach ich such, oder google aber bei mein Problem spreng ich das TextEdit von Google oder der SuFu


Mit freundlichem Gruss,
Stryder
Urki
Beiträge: 10
Registriert: 25. Januar 2009 02:42

Re: QTableView

Beitrag von Urki »

Hmmm, der Primary Key darf in QSqlRelationalTableModel keine Relation zu einer anderen Tabelle haben. Ich schätze mal der Key steht in der ersten Spalte?

Prinzipiell könntest du die Werte in einer eigenen Abfrage speichern, ein eigenes Modell von QSqlRelationalTableModel ableiten und die Data Methode überladen. Immer wenn er hier die erste Spalte abruft, kannst du deine eigenen Werte eintragen. Du musst ja eh irgendwie wissen welchem "Typ" welche Werte gehören. Stehen in der values die Daten eigentlich schon so geordnet untereinander?

Ansonsten kannst du natürlich auch von QSqlQueryModel ableiten, deine Abfrage zusammenstellen und dir die Relationsfunktionen selber schreiben. Entweder ein eigenes Delegate oder direkt QSqlRelationalDelegate benutzen, was für dich wohl das richtige wäre.

Zum einfügen von Zeilen könntest du dir das mal anschauen: http://doc.trolltech.com/4.7/model-view ... ble-models

Die Header an den verschiedenen stellen ...? Dann verstehe ich nicht ganz den Aufbau deiner Tabelle. Du legst ja eh pro Spalte eine Relation oder ein Delegate fest. Dann wäre die Relation auch für jeden "Typ" an einer anderen Spalte anders?

Vielleicht kannst du ja trotzdem ein wenig damit anfangen.
Stryder
Beiträge: 9
Registriert: 28. Juli 2011 10:32

Re: QTableView

Beitrag von Stryder »

Vlt sollte ich noch erwähnen, das nur die Werte aus values geändert werden können, der rest dient nur zur darstellung - diese werden woanders bearbeitet - macht das nun ein unterschied?
Also dient Name + Nachname und das leere Feld nur als verticaler Header ... ;)

Edit... ja das verschiebt sich, geht halt um Datum, welches jeden Monat anders ist, soll immer noch einem Sonntag INS kommen...

Also müsste ich für jeden "Version" eines Monats eine Tabelle anlegen, das immer nach einem Sonntag das INS kommt aber ich denke das wird sinnfrei sein.
Daher verschiebt sich ja der Header, das INS soll halt auch nur zur darstellung dienen, nicht der bearbeitung.. will wirklich nur die Werte ändern nicht mehr und nicht weniger, das andere stellt dar
und das ding soll ja dann auch gedruckt werden deshalb etwas umfangreich vlt`?
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Re: QTableView

Beitrag von solarix »

Die Qt-Standardmodels lösen nur ganz bestimmte Standard-Aufgaben. Fall man abweichende Anforderungen hat, muss man halt selbst ein Model implementieren.

Oder wie es in der Qt-Doku steht:
http://doc.trolltech.com/4.7/model-view-programming.html#models hat geschrieben:If these standard models do not meet your requirements, you can subclass QAbstractItemModel, QAbstractListModel, or QAbstractTableModel to create your own custom models.
Daher: ein QAbstractTableModel ableiten und happy hacking :wink:

hth..
Stryder
Beiträge: 9
Registriert: 28. Juli 2011 10:32

Re: QTableView

Beitrag von Stryder »

Gut, dankeschön - muss ich mich wohl mal daran wagen :D
Danke für die Hilfe .. ;)
Antworten