首页 > 解决方案 > 在 QHeaderView 中获取标题部分文本

问题描述

我在 QTableWidget 中对 QHeaderView 进行子类化,以提供用于隐藏/显示部分的自定义功能。有没有办法从标题视图中获取部分的文本?我知道我可以在表格的范围内做到这一点,但这不是我想要做的。

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

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

标签: pythonpyqtqheaderview

解决方案


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

推荐阅读