gpt4 book ai didi

python - 右键单击QTableWidget获取标题列

转载 作者:太空狗 更新时间:2023-10-30 01:16:38 25 4
gpt4 key购买 nike

我有一个 QTableWidget,其中有许多列只是复选框(有些不是)。我正在尝试实现一项功能,以便当用户右键单击与“仅复选框”列相关的标题项时,他们会看到“全部取消选中”或“全部选中”的选项。

到目前为止,我已经通过以下信号设法实现了一个customContextMenu:

self.headers = self.tblData.horizontalHeader()
self.headers.setContextMenuPolicy(Qt.CustomContextMenu)
self.headers.customContextMenuRequested.connect(self.show_header_context_menu)
self.headers.setSelectionMode(QAbstractItemView.SingleSelection)

这会导致以下上下文菜单调用:

def show_header_context_menu(self, position):
menu = QMenu()
deselect = menu.addAction("Clear Checked")
ac = menu.exec_(self.tblData.mapToGlobal(position))
if ac == deselect:
pass
#Actually do stuff here, of course

这会弹出一个上下文菜单,但是我找不到任何方法来获取右键单击的标题的索引,我已经尝试过 self.headers.selectedIndexes() 以及self.headers.currentIndex() 但这些似乎只与实际的表选择有关,与标题无关。

一旦我设法获得右键单击的标题索引,我就可以轻松地将菜单限制为仅在选择了正确的索引时显示(那些只有复选框的列),所以这是一个额外的事情,真的。

我错过了什么?在此先感谢您的帮助。

最佳答案

customContextMenuRequested 信号将上下文菜单事件的位置作为 QPoint 发送。方便的是,表格的标题有一个重载 logicalIndexAt可以直接利用它,所以你可以简单地做:

def show_header_context_menu(self, position):
column = self.headers.logicalIndexAt(position)

关于python - 右键单击QTableWidget获取标题列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11888635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com