Seite 1 von 1

QAbstractTableModel mit SQLQueryDaten füllen

Verfasst: Freitag 24. November 2023, 16:01
von GiJay
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 !

Re: QAbstractTableModel mit SQLQueryDaten füllen

Verfasst: Mittwoch 29. November 2023, 09:57
von GiJay
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.