QTableWidget:删除或扩展到整行单元格的活动高亮

2024-04-25 22:19:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用python3.6/3.7上的pyqt5.13.1开发一个跨平台的应用程序(目前在ubuntu18.10和windows10下开发)。我使用的QTableWidget是这样初始化的:

myTable = QTableWidget()
myTable.setSelectionBehavior(QAbstractItemView.SelectRows)
myTable.setSelectionMode(QAbstractItemView.SingleSelection)
myTable.setAlternatingRowColors(True)

在应用程序启动时,我的表有两列,但为空(没有行),我有一个按钮可以逐个添加行。当我第一次这样做的时候,第一行被添加,第一个单元格有一种浅蓝色高亮显示(在Ubuntu和Windows中),第二个单元格没有,如下面的屏幕截图所示:

enter image description here

如果我点击其中任何一个单元格,整行都会被选中,并显示一个蓝色背景,相应地带有setSelectionBehavior初始化。如果按住CTRL键并单击选中的行,它将被取消选中并返回,第一个单元格处于活动/高亮显示状态,第二个单元格未处于活动/高亮显示状态。我的问题是:有没有一种方法可以完全消除那个突出显示(我更喜欢的),或者把它也扩展到相邻的单元?我已经读到过一个可能的解决方案是禁用表的焦点,但我希望避免这样的解决方案。你知道吗

提前谢谢大家!你知道吗


Tags: true应用程序状态mytable跨平台解决方案按钮qtablewidget
0条回答
网友
1楼 · 发布于 2024-04-25 22:19:07

即使未选择任何索引,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)

相关问题 更多 >