QTableView nach zwei oder mehr Spalten sortieren
Verfasst: 20. März 2010 01:09
Hallo,
ich verwende Qt4.6 und dessen Qt Designer, um in einem QTableView SQL Tabellen anzuzeigen. Das klappt soweit.
Allerdings haben die Tabellen keinen echten Primary Key bzw. einen, der mehrere Spalten umfaßt. Wird nun im View nach einer Spalte sortiert, die einen Wert mehrfach enthält, werden die Zeilen in zufälliger Reihenfolge angezeigt, was sich durchaus ändert, wenn man Werte ändert.
Bsp.:
Eine SQL Tabelle mit den Felder A bis G; A & B bilden gemeinsam den Primary Key.
Nun wird nach A sortiert. Die Zeilen werden so dargestellt, daß alle Zeilen mit demselben Wert in A unmittelbar hintereinander stehen, die Werte in B haben jedoch eine zufállige Reihenfolge. Diese Reihenfolge ändert sich sogar, wenn man Werte in B bis G ändert.
Kann ich dem QTableView beibringen, wenn nach einer der Spalten C bis G sortiert werden soll (Click auf horizontalem Header oder sortByColumn()-Funktion), zusätzlich nach A und B sortiert wird; bei A und B entsprechend, jedoch die Spalte nur einmal.
Es müßte beim ORDER BY der SQL Abfrage nicht nur ein Feld, sondern mehrere angegeben werden.
Danke, Steffen
ich verwende Qt4.6 und dessen Qt Designer, um in einem QTableView SQL Tabellen anzuzeigen. Das klappt soweit.
Allerdings haben die Tabellen keinen echten Primary Key bzw. einen, der mehrere Spalten umfaßt. Wird nun im View nach einer Spalte sortiert, die einen Wert mehrfach enthält, werden die Zeilen in zufälliger Reihenfolge angezeigt, was sich durchaus ändert, wenn man Werte ändert.
Bsp.:
Eine SQL Tabelle mit den Felder A bis G; A & B bilden gemeinsam den Primary Key.
Nun wird nach A sortiert. Die Zeilen werden so dargestellt, daß alle Zeilen mit demselben Wert in A unmittelbar hintereinander stehen, die Werte in B haben jedoch eine zufállige Reihenfolge. Diese Reihenfolge ändert sich sogar, wenn man Werte in B bis G ändert.
Kann ich dem QTableView beibringen, wenn nach einer der Spalten C bis G sortiert werden soll (Click auf horizontalem Header oder sortByColumn()-Funktion), zusätzlich nach A und B sortiert wird; bei A und B entsprechend, jedoch die Spalte nur einmal.
Es müßte beim ORDER BY der SQL Abfrage nicht nur ein Feld, sondern mehrere angegeben werden.
Danke, Steffen