QAbstractTableModel mit SQLQueryDaten füllen

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
GiJay
User
Beiträge: 36
Registriert: Freitag 5. März 2021, 14:40
Wohnort: Ratingen
Kontaktdaten:

Ich experimentiere gerade mit TableModellen herum und verusche eine SQLQueryabfrage in einem QAbstractTableModel darzustellen. Das Model bleibt aber leer

Code: Alles auswählen

	# Daten aus Abfrage
        self.query_model = QSqlQueryModel()
        #headers = ["1", "2", "3", "4", "5", "6", "7", "8", "9" ]
        #tab_model = MyTableModel(self.query_model, headers)
        tab_model = MyTableModel(self.query_model)
        view = QTableView()
        view.setModel(tab_model)
	# Mit der Darstellung im QTableView funktioniert es
        # view.setModel(self.query_model) ### TEST

Code: Alles auswählen

class MyTableModel(QAbstractTableModel):
    #def __init__(self, model, headers):
    def __init__(self, model):
        super().__init__(model)
        self._model_sql = model
        #self._headers = headers

    def rowCount(self, index=None):
        return self._model_sql.rowCount()

    def columnCount(self, index=None):
        return self._model_sql.columnCount()

    def headerData(self, section, orientation, role):
        if role == Qt.ItemDataRole.DisplayRole and orientation == Qt.ItemDataRole.Horizontal:
            if section == 0:
                return "KDNr."

    def data(self, index, role=Qt.ItemDataRole.DisplayRole):
        if not index.isValid():
            return None

        elif role == Qt.ItemDataRole.DisplayRole:
            column = index.column()
            if column == 0:
                return self._model_sql.record(index.row()).value(column)
            elif column == 1:
                value = self._model_sql.record(index.row()).value(column)
                return f"RIP {value}"
            else:
                return None

        return None
Kann mir jemand einen Tipp geben? Danke !
GiJay
User
Beiträge: 36
Registriert: Freitag 5. März 2021, 14:40
Wohnort: Ratingen
Kontaktdaten:

Habe den Fehler gefunden:

Code: Alles auswählen

if role == Qt.ItemDataRole.DisplayRole and orientation == Qt.Orientation.Horizontal
muss es bei "def headerData" heißen. So funktioniert die Tabelle und kann weiter "ausgebaut" werden.
Antworten