我有一个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()
以及{
一旦我成功地获得了右键单击的标题索引,我就可以轻松地限制菜单,使其仅在选择了正确的索引时显示(那些只有复选框的列),所以这是一个额外的事情,真的。在
我错过了什么?提前谢谢你的帮助。在
customContextMenuRequested
信号以QPoint
的形式发送上下文菜单事件的位置。方便的是,表的头有一个可以直接利用它的logicalIndexAt重载,因此您可以简单地执行以下操作:我知道你在使用python,但我认为这应该仍然有效。在
尝试创建一个
QHeaderView
派生类,并尝试重写要获取鼠标右键单击事件,请使用
^{pr2}$获取右键单击的列的逻辑索引。最后显示上下文菜单。在
见http://doc.qt.nokia.com/4.7-snapshot/qheaderview.html
相关问题 更多 >
编程相关推荐