QTableWidget:删除或扩展到整行单元格的活动突出显示
QTableWidget: remove or extend to entire row the cell's active highlight
我目前正在使用 PyQT 5.13.1 在 Python 3.6/3.7 上开发一个跨平台应用程序(目前正在 Ubuntu 18.10 和 Windows 10 下开发)。我正在使用以这种方式初始化的 QTableWidget:
myTable = QTableWidget()
myTable.setSelectionBehavior(QAbstractItemView.SelectRows)
myTable.setSelectionMode(QAbstractItemView.SingleSelection)
myTable.setAlternatingRowColors(True)
在应用程序启动时,我的 table 有两列但是是空的(没有行),我有一个按钮可以逐行添加。当我第一次这样做时,第一行被添加,它显示第一个单元格有一种浅蓝色高亮(在 Ubuntu 和 Windows 中)和第二个没有它的单元格,如在此屏幕截图中:
如果我单击这些单元格中的任何一个,整行将被选中并显示蓝色背景,相应地进行 setSelectionBehavior
初始化。如果我按 CTRL+单击所选行,它会被取消选择并返回第一个单元格 active/highlighted 而第二个单元格则不会。我的问题是:有没有办法完全删除该突出显示(我更喜欢)或将其扩展到相邻的单元格?我读过一个可能的解决方案是禁用 table 的焦点,但我希望避免这样的解决方案。
提前谢谢大家!
即使没有选择索引,currentIndex 也存在,并且默认高亮显示。因此,要消除此行为,您可以使用委托来消除该行为:
class Delegate(QtWidgets.QStyledItemDelegate):
def initStyleOption(self, option, index):
super().initStyleOption(option, index)
option.state &= ~QtWidgets.QStyle.State_HasFocus
delegate = Delegate(myTable)
myTable.setItemDelegate(delegate)
我目前正在使用 PyQT 5.13.1 在 Python 3.6/3.7 上开发一个跨平台应用程序(目前正在 Ubuntu 18.10 和 Windows 10 下开发)。我正在使用以这种方式初始化的 QTableWidget:
myTable = QTableWidget()
myTable.setSelectionBehavior(QAbstractItemView.SelectRows)
myTable.setSelectionMode(QAbstractItemView.SingleSelection)
myTable.setAlternatingRowColors(True)
在应用程序启动时,我的 table 有两列但是是空的(没有行),我有一个按钮可以逐行添加。当我第一次这样做时,第一行被添加,它显示第一个单元格有一种浅蓝色高亮(在 Ubuntu 和 Windows 中)和第二个没有它的单元格,如在此屏幕截图中:
如果我单击这些单元格中的任何一个,整行将被选中并显示蓝色背景,相应地进行 setSelectionBehavior
初始化。如果我按 CTRL+单击所选行,它会被取消选择并返回第一个单元格 active/highlighted 而第二个单元格则不会。我的问题是:有没有办法完全删除该突出显示(我更喜欢)或将其扩展到相邻的单元格?我读过一个可能的解决方案是禁用 table 的焦点,但我希望避免这样的解决方案。
提前谢谢大家!
即使没有选择索引,currentIndex 也存在,并且默认高亮显示。因此,要消除此行为,您可以使用委托来消除该行为:
class Delegate(QtWidgets.QStyledItemDelegate):
def initStyleOption(self, option, index):
super().initStyleOption(option, index)
option.state &= ~QtWidgets.QStyle.State_HasFocus
delegate = Delegate(myTable)
myTable.setItemDelegate(delegate)