在QHeaderView中获取标题部分文本

时间:2019-12-04 01:28:00

标签: python pyqt qheaderview

我在QTableWidget中将QHeaderView子类化,以提供用于隐藏/显示节的自定义功能。有没有办法从标题视图中获取节的文本?我知道我可以在表的范围内执行此操作,但这不是我要执行的操作。

我意识到数据内部存储在模型中,但是以下测试仅返回“ None”:

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

1 个答案:

答案 0 :(得分:2)

您可以使用分配给QHeaderView的模型,并使用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_())