"Alignment.Center in a QTableView" ! (Maybe Qt 6.5.2 has a bug?)

19 Views Asked by At

This code is from "Main":

   ....
   self.k_db_open()
   self.k_db_init()
   self.query_model = QSqlQueryModel()
   query = QSqlQuery("SELECT dbkKDNr, dbkAnrede, dbkTitel, dbkVorname, dbkNachname, dbkPLZ,
           dbkStadt, dbkaktiv, dbkMAker FROM kunde")
   headers = ['KdNr.', 'Anrede', 'Titel', 'Vorname', 'Nachname', 'PLZ', 'Stadt', 'Aktiv', 'Maker']
   limit = len(headers)
   self.query_model.setQuery(query)
   tab_model = MyTableModel(self.query_model, headers)
   view = QTableView()
   view.setModel(tab_model)
   counter = 0
   while counter < limit:
      view.resizeColumnToContents(counter)
      counter += 1
   self.close_db()

and the class of the QAbstractTableModel

class MyTableModel(QAbstractTableModel):

    def __init__(self, model, headers):
        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.Orientation.Horizontal:
            return self._headers[section]
            return MyTableModel.headerData(self, section, orientation, role)
        if role == Qt.ItemDataRole.ForegroundRole:
            # Color ....
            return QVariant(QColor("blue"))

    def data(self, index, role=Qt.ItemDataRole.DisplayRole):
        if not index.isValid():
            print("index: " + str(index))
            return None
        elif role == Qt.ItemDataRole.DisplayRole:
            column = index.column()
            # 0
            if column == 0:
                value = self._model_sql.record(index.row()).value(column)
                if role == Qt.ItemDataRole.TextAlignmentRole:
                    return Qt.AlignmentFlag.AlignCenter
                return value
            # 1
            elif column == 1:
                value = self._model_sql.record(index.row()).value(column)
                return value
            # 2
            elif column == 2:
                value = self._model_sql.record(index.row()).value(column)
                return value
            # 3 ...
            # 4 ...
            ...
            # 9
            elif column == 9:
                value = self._model_sql.record(index.row()).value(column)
                return value
            else:
                return None
        return None

The table works as expected, except that I can't put the first column in the middle.

I compared this code with a working code from Qt5, but it doesn't work under Qt6. Does somebody has any idea?

Thank you for reading !!!

0

There are 0 best solutions below