python - 如何获取调用 contextMenu() 的父小部件
问题描述
我有一个我正在调用 customContextMenu 的 treeWidget 。但我无法获得调用它的 widgetItem。
我尝试阅读文档但一无所获
树小部件:
self.treeWidget = QtWidgets.QTreeWidget(self.centralwidget)
self.treeWidget.headerItem().setText(0, "Database Explorer")
self.treeWidget.setContextMenuPolicy(Qt.CustomContextMenu)
self.treeWidget.customContextMenuRequested.connect(self.openMenu)
def openMenu(self,position):
menu = QtWidgets.QMenu()
deleteAction = menu.addAction("Delete")
showAction = menu.addAction("Show")
action = menu.exec_(self.treeWidget.mapToGlobal(position))
if action == deleteAction:
self.my_function(treeWidgetItemObject)
我想获取在 my_function() 中调用 contextMenu 的 treeWidgetItem 对象
解决方案
indexAt()
如果要获取与itemAt()
QTreeWidgetItem 按下或返回的项目关联的 QModelIndex,则必须使用
def openMenu(self,position):
menu = QtWidgets.QMenu()
deleteAction = menu.addAction("Delete")
showAction = menu.addAction("Show")
pos = self.treeWidget.viewport().mapToGlobal(position)
action = menu.exec_(pos)
if action == deleteAction:
ix = self.treeWidget.indexAt(position)
if ix.isValid():
print(ix.data())
it = self.treeWidget.itemFromIndex(ix)
texts = [it.text(c) for c in range(it.columnCount())]
print(texts)
推荐阅读
- excel - 在 VBA 用户窗体中使用循环更改标签的标题
- python - 从python中的所有层获取一个位置的值
- html - 如何删除2个选择框之间的空格?
- c - 打印时如何使分配的二维数组不显示任何内容?
- reactjs - 如何验证反应路由器路由参数
- bash - 使用从 LaTeX 文档中提取引用的脚本
- android - 如何使用 Retrofit 从 android 中的服务器获取动态生成的报告?
- qt - QML中ApplicationWindow的MenuBar动态添加Menu
- spring - 是否可以使用 gradle 构建 vaadin 14 Spring 项目?
- django - 如何通过Django中的链接下载上传的文件