在 QHeaderView 中获取 header 部分文本

Get header section text in QHeaderView

我在 QTableWidget 中对 QHeaderView 进行子类化,以便为 hiding/showing 部分提供自定义功能。有没有办法从 header 视图中获取部分的文本?我知道我可以在 table 的范围内做到这一点,但这不是我想要做的。

我意识到数据存储在模型内部,但是下面的测试只是 returns "None":

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

您可以使用分配给 QHeaderView and get the text using the 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_())