防止 TableView header 被突出显示
Prevent TableView header from being highlighted
我正在使用 table 视图,我可以在其中 select 一行,双击后它将打开一个新的 window。但是,我不希望 header 在我单击其单元格上的内容时突出显示。
self.memory_map_table.double_click_row(self._modify_row)
如何防止 table 水平视图 header 在单击下方的单元格时突出显示?
self.memory_map_table.horizontalHeader(). ...
一种可能的解决方案是实现覆盖该突出显示的 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_())
我正在使用 table 视图,我可以在其中 select 一行,双击后它将打开一个新的 window。但是,我不希望 header 在我单击其单元格上的内容时突出显示。
self.memory_map_table.double_click_row(self._modify_row)
如何防止 table 水平视图 header 在单击下方的单元格时突出显示?
self.memory_map_table.horizontalHeader(). ...
一种可能的解决方案是实现覆盖该突出显示的 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_())