防止突出显示TableView标头

时间:2019-06-11 08:02:40

标签: python python-3.x qtableview pyside2 qheaderview

我正在使用表格视图,在其中可以选择一行,双击后它将打开一个新窗口。但是,我不希望在单击其单元格上的任何内容时突出显示标题。

self.memory_map_table.double_click_row(self._modify_row)

当我单击表格下方的单元格时如何防止突出显示表格视图水平标题?

self.memory_map_table.horizontalHeader(). ...

1 个答案:

答案 0 :(得分:1)

一种可能的解决方案是实现QProxyStyle来替代突出显示的内容:

from PySide2 import QtCore, QtGui, QtWidgets


class HeaderProxyStyle(QtWidgets.QProxyStyle):
    def drawControl(self, element, option, painter, widget=None):
        if element == QtWidgets.QStyle.CE_Header:
            option.state &= ~QtWidgets.QStyle.State_On
            option.state &= ~QtWidgets.QStyle.State_Sunken
        super(HeaderProxyStyle, self).drawControl(
            element, option, painter, widget
        )


if __name__ == "__main__":
    import sys

    app = QtWidgets.QApplication(sys.argv)

    w = QtWidgets.QTableView()
    # https://bugreports.qt.io/browse/PYSIDE-922
    w.horizontalHeader().setStyle(HeaderProxyStyle())

    model = QtGui.QStandardItemModel(4, 4)
    w.setModel(model)

    w.show()

    sys.exit(app.exec_())