Pyqt QTableview nach sortieren Refreshen

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
Benutzeravatar
nieselfriem
User
Beiträge: 81
Registriert: Sonntag 13. Januar 2013, 16:00

Sonntag 17. September 2017, 13:42

Hallo zusammen,

ich habe in meinem Tabellenmodell eine Sortierfunktion implementiert, die bei Anklicken des Tabelleheaders die Tabelle in alphabetischer Reihenfolge sortiert. Das Funktion recht gut, bis auf einem kleinen Manko. Ich muss erst in der Tabelle kurz scrollen, damit die sortierung quasi in einem Refresh ihre Anwendung findet. Wie kann ich die Tabelle quasi Refreshen, nach dem die Sortierung statt gefunden hat?

Code: Alles auswählen

 class KundenTableModel(QtCore.QAbstractTableModel):
    headers = ["Nachname", "Vorname","Straße", "PLZ", "Ort",  "Land", "Adresszusatz", "Staat", "Tel", "Email"]
....   
   def sort(self, Ncol, order):
        """Sort table by given column number.
        """
        #Todo: Sortieren erst nach
        self.layoutAboutToBeChanged.emit()
        self._data= [['' if x is None else x for x in c] for c in self._data]
        try:
            self._data = sorted(self._data, key=operator.itemgetter(Ncol))
        except:
            print("Kein Sortieren möglich")
        if order == Qt.DescendingOrder:
            self._data.reverse()
        self.layoutChanged.emit()

Code: Alles auswählen

    def load_ku_data(self):
        model = self.fill_tables.fill_ku_table()
        if model is not None:
            self.kuDatenTb.setModel(model)
            self.kuDatenTb.setSortingEnabled(True)
        else:
            print ("Nomodel")
            self.no_Ku_Datas_LB.setVisible(False)
VG niesel
__deets__
User
Beiträge: 3347
Registriert: Mittwoch 14. Oktober 2015, 14:29

Sonntag 17. September 2017, 16:57

Die Doku is da ungewöhnlich schlecht. Aber ich würde es mal mir Data changed Signalen probieren, statt denen die du verwendest.
Antworten