如何获取调用contextMenu()的父小部件

2024-09-25 08:29:00 发布

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

我有一个树梢,我在上面调用customContextMenu。 但我无法获取调用它的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)

我想获取treeWidgetItem的对象,在我的函数()中调用了contextMenu


Tags: 文件selfpositionactionmenuaddactionqtwidgetsqtreewidget
1条回答
网友
1楼 · 发布于 2024-09-25 08:29:00

如果要获取与按下的项相关联的QModelIndex或由QTreeWidgetItem返回的itemAt(),则必须使用indexAt()

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)

相关问题 更多 >