Получить текст раздела заголовка в QHeaderView

Я создаю подкласс QHeaderView в QTableWidget, чтобы обеспечить пользовательские функции для скрытия/отображения разделов. Есть ли способ получить текст раздела из представления заголовка? Я знаю, что могу сделать это в рамках таблицы, но это не то, что я пытаюсь сделать.

Я понимаю, что данные хранятся внутри модели, однако следующий тест просто возвращает «Нет»:

self.model().index(0,0).data()

person Spencer    schedule 04.12.2019    source источник


Ответы (1)


Вы можете использовать модель, назначенную QHeaderView, и получить текст с помощью < метод href="https://doc.qt.io/qt-5/qabstractitemmodel.html#headerData" rel="nofollow noreferrer">headerData():

from PyQt5 import QtCore, QtGui, QtWidgets


class HeaderView(QtWidgets.QHeaderView):
    def text(self, section):
        if isinstance(self.model(), QtCore.QAbstractItemModel):
            return self.model().headerData(section, self.orientation())


if __name__ == "__main__":
    import sys

    app = QtWidgets.QApplication(sys.argv)

    w = QtWidgets.QTableWidget(10, 4)
    w.setHorizontalHeaderLabels(
        ["section-{}".format(i) for i in range(w.columnCount())]
    )

    horizontal_headerview = HeaderView(QtCore.Qt.Horizontal, w)
    w.setHorizontalHeader(horizontal_headerview)

    print(horizontal_headerview.text(1))

    vertical_headerview = HeaderView(QtCore.Qt.Vertical, w)
    w.setVerticalHeader(vertical_headerview)

    print(vertical_headerview.text(2))

    w.show()

    sys.exit(app.exec_())
person eyllanesc    schedule 04.12.2019
comment
Ничего себе так нужно назвать шапку модели шапки! Я пытался получить данные напрямую, что, конечно, не сработало. - person Spencer; 04.12.2019