Seite 1 von 1
QTableWidget - Sortieren von 2 Spalten
Verfasst: Dienstag 20. August 2019, 13:04
von 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:
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?
Re: QTableWidget - Sortieren von 2 Spalten
Verfasst: Dienstag 20. August 2019, 14:47
von __deets__
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.
Re: QTableWidget - Sortieren von 2 Spalten
Verfasst: Mittwoch 21. August 2019, 20:03
von bb1898
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.