Seite 1 von 1

Pyqt QTableview nach sortieren Refreshen

Verfasst: Sonntag 17. September 2017, 13:42
von nieselfriem
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

Re: Pyqt QTableview nach sortieren Refreshen

Verfasst: Sonntag 17. September 2017, 16:57
von __deets__
Die Doku is da ungewöhnlich schlecht. Aber ich würde es mal mir Data changed Signalen probieren, statt denen die du verwendest.