Setting header data in QTableView

Rodrigo de Salvo Braz rodrigobraz at gmail.com
Sat Feb 6 09:46:22 GMT 2021


Hi,

Qt's documentation says
<https://doc.qt.io/qtforpython-5.12/overviews/sql-presenting.html> one can
use setHeaderData to set column headers.

However, I used it in the simple example below and it has no effect. Why
not?

Note: I've used headerData to return column names directly and it works.
However, I am curious why setHeaderData doesn't work in this example.

Thanks,

Rodrigo
PS: please let me know if this list should be used only for questions more
specific about PyQt as opposed to Qt.

import sys

from PyQt5 import QtCore
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QVBoxLayout, QWidget, QApplication,
QMainWindow, QTableView


class TableModel(QtCore.QAbstractTableModel):
    def __init__(self):
        super().__init__()
        for i in range(4):
            self.setHeaderData(i, Qt.Horizontal, "Column " + str(i))

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

    def rowCount(self, index):
        return 3

    def columnCount(self, index):
        return 4


class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        l = QVBoxLayout()

        self.table = QTableView()

        self.model = TableModel()
        self.table.setModel(self.model)

        l.addWidget(self.table)

        w = QWidget()
        w.setLayout(l)
        self.setCentralWidget(w)


app = QApplication(sys.argv)
w = MainWindow()
w.show()
app.exec_()
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.riverbankcomputing.com/pipermail/pyqt/attachments/20210206/a768064e/attachment.htm>


More information about the PyQt mailing list