我目前正在 Python 3.6/3.7 上使用 PyQT 5.13.1 开发一个跨平台应用程序(当前在 Ubuntu 18.10 和 Windows 10 下开发)。我正在使用以这种方式初始化的 QTableWidget:
myTable = QTableWidget()
myTable.setSelectionBehavior(QAbstractItemView.SelectRows)
myTable.setSelectionMode(QAbstractItemView.SingleSelection)
myTable.setAlternatingRowColors(True)
在应用程序启动时,我的表格有两列,但为空(没有行),并且有一个按钮可以逐一添加行。当我第一次执行此操作时,会添加第一行,并且第一个单元格带有浅蓝色突出显示(在 Ubuntu 和 Windows 中),而第二个单元格没有它,如以下屏幕截图所示:
如果我单击这些单元格中的任何一个,整行都会被选中并显示蓝色背景,与 setSelectionBehavior
初始化相应。如果我按住 CTRL 键并单击所选行,则会取消选择该行并返回,第一个单元格处于事件/突出显示状态,而第二个单元格处于事件/突出显示状态。我的问题是:有没有办法完全删除该突出显示(我更喜欢)或将其扩展到相邻的单元格?我读过一种可能的解决方案是禁用表格的焦点,但我希望避免这样的解决方案。
先谢谢大家了!
最佳答案
即使没有选择索引,currentIndex 也会存在,并且默认情况下它会突出显示。因此,要消除这种行为,您可以使用委托(delegate)来消除这种行为:
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)
关于python - QTableWidget:删除或扩展到整行单元格的事件突出显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58340428/