右键单击QTableWidg获取标题列

2024-09-25 08:37:47 发布

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

我有一个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)

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

^{pr2}$

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

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

我错过了什么?提前谢谢你的帮助。在


Tags: 用户self标题信号选项菜单特性复选框
2条回答

customContextMenuRequested信号以QPoint的形式发送上下文菜单事件的位置。方便的是,表的头有一个可以直接利用它的logicalIndexAt重载,因此您可以简单地执行以下操作:

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

我知道你在使用python,但我认为这应该仍然有效。在

尝试创建一个QHeaderView派生类,并尝试重写

void QHeaderView::mousePressEvent ( QMouseEvent * e )

要获取鼠标右键单击事件,请使用

^{pr2}$

获取右键单击的列的逻辑索引。最后显示上下文菜单。在

http://doc.qt.nokia.com/4.7-snapshot/qheaderview.html

相关问题 更多 >