QTableWidget - Sortieren von 2 Spalten

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
NewPython19

Hallo,

ich habe eine QTableWidget mit vier Spalten. Die ersten beiden beeinhalten ein Datum und eine Uhrzeit. Diese beiden Spalten gehören prinzipiell "zusammen".
Für meine QTableWidget hab ich das Sortieren freigeschaltet:

Code: Alles auswählen

self.table.setSortingEnabled(True)
Jedoch habe ich das Problem, dass wenn ich Spalte 1 (Datum) sortiere die zweite Spalte (Uhrzeit) unsortiert bleibt. Kann man irgendwie beide Spalten zusammen sortieren?
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das war doch wenn ich mich recht erinnere schon in deiner Datenbank ein schlechtes Design. Nimm eine Spalte in deiner Tabelle, und eine im TableWidget. Ansonsten steht dir halt viel Arbeit bevor, weil du die Klicks auf die respektiven Header abfangen, und die Spalten nacheinander nach Zeit und dann Datum sortieren musst. Das geht, aber dazu musst du tiefer in die Trickkiste greifen - die Dokumentation von QTableWidget verraet dir sicherlich, wie du damit anfaengst.
bb1898
User
Beiträge: 199
Registriert: Mittwoch 12. Juli 2006, 14:28

Es gäbe noch einen Mittelweg, ohne Änderung an der Tabellenstruktur: da Du ein QTableWidget benutzt und nicht ein QTableView mit zugehörigem Model (QSqlTableModel würde sich wohl anbieten), musst Du ja sowieso die Datensätze selbst dort hinein laden. In der entsprechenden Methode könntest Du die beiden Felder aus dem Datenbanksatz zu einem zusammenfassen, ungefähr so:

Code: Alles auswählen

import datetime
# ... sonstige Importe
...
for record in allrecords:
	mydatetime = datetime.combine(record["datecolumn"], record["timecolumn")
	mytablewidget.setItem(row, 0, QTableWidgetItem(mydatetime)
	# restliche Felder zufügen
...
Aber besser wäre es auf jeden Fall, Datum und Zeit gleich in der Datenbank in eine DateTime-Spalte zu packen.
Antworten