Pyqt5中QTreeWidgetItem 实现右键出现菜单

1.配置treewidget策略

self.treeWidget.setContextMenuPolicy(Qt.CustomContextMenu)  # 打开右键菜单的策略
self.treeWidget.customContextMenuRequested.connect(self.treeWidgetItem_fun)  # 绑定事件

2.编写绑定事件方法

  #定义treewidget中item右键界面
    def treeWidgetItem_fun(self,pos):
        item=self.treeWidget.currentItem()
        item1= self.treeWidget.itemAt(pos)

        if item!=None and item1!=None:
            popMenu = QMenu()
            popMenu.addAction(QAction(u'aaa', self))
            popMenu.addAction(QAction(u'bbb', self))
            popMenu.triggered[QAction].connect(self.processtrigger)
            popMenu.exec_(QCursor.pos())

    def processtrigger(self, q):
        #相应的处理

传入pos用以通过itemAt确认当前点击位置是一个树节点,currentItem用以获取当前点击节点进行相应操作

3.效果图

Pyqt5中QTreeWidgetItem 实现右键出现菜单_第1张图片

只有在节点上点击才会触发菜单,空白处右击不会触发

4.走不通的路子

本来想重载点击事件mousePressEvent,根据点击的是左键还是右键来判断要不要弹出菜单,但是一旦mousePressEvent重载,原本左键的展开功能也没了

5.参考:

https://www.jianshu.com/p/4ecb8dd775f4

你可能感兴趣的:(Pyqt5中QTreeWidgetItem 实现右键出现菜单)