PyQt5右键单击treeWidget项

时间:2017-03-10 12:58:19

标签: c++ python-3.5 pyqt5 qt5.5

您好我正在使用Python 3.5和Pyqt5中的项目,我想在treeWidget项目上添加一个右键,这样我就可以创建一个带有操作的上下文菜单,但我没有找到它PyQt5。谢谢。

3 个答案:

答案 0 :(得分:3)

问题实际上解决了,所以这就是你在QtreeWidget区域中添加右键单击上下文菜单的方法

 def menuContextuelAlbum(self, event):
    self.menu_contextuelAlb = QtWidgets.QMenu(self.treeWidget)
    ajoutFileAtt = self.menu_contextuelAlb.addAction("Ajouter l'album à la file d'attente")
    action2 = self.menu_contextuelAlb.exec_(self.treeWidget.mapToGlobal(event))
    if action2 is not None:
        if action2 == ajoutFileAtt:
            self.addAlbumlistAtt()

和午餐一起吃饭:

    self.treeWidget.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)  
    self.treeWidget.customContextMenuRequested.connect(self.menuContextuelAlbum)  
    self.actionOuvrir.triggered.connect(self.menu)  

答案 1 :(得分:1)

您需要使用自己的QTreeWidget创建自己的mousePressEvent。 在mousePressEvent检查事件类型是否是右键单击,如果是,请执行任何操作。然后,当您在树中添加小部件时,确保它将是您添加的类,而不是QTreeWidget

类似的东西:

from PyQt4 import QtCore, QtGui
from PyQt4.QtGui import QTreeWidgetItem
import sys

class MyTreeWidget(QtGui.QTreeWidget):
    def __init__(self, parent = None):
        QtGui.QTreeWidget.__init__(self, parent)
    def mousePressEvent (self, event):
        print("child clicked ! ")
        if event.button() == QtCore.Qt.RightButton:
            print("right click !")
        QtGui.QTreeWidget.mousePressEvent(self, event)

def main():
    app = QtGui.QApplication(sys.argv)
    QtGui.qApp = app
    pointListBox = MyTreeWidget()
    root = QTreeWidgetItem(pointListBox, ["root"])
    A = QTreeWidgetItem(root, ["A"])
    barA = QTreeWidgetItem(A, ["bar", "i", "ii"])
    bazA = QTreeWidgetItem(A, ["baz", "a", "b"])

    pointListBox.show()

    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

答案 2 :(得分:0)

发布更新的答案。这对我有用:

class MainWindow_W():
    def __init__(self):
        self.app = QtWidgets.QApplication(sys.argv)
        self.MainWindow = QtWidgets.QMainWindow()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self.MainWindow)



        # Connect the contextmenu
        self.ui.treeWidget.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
        self.ui.treeWidget.customContextMenuRequested.connect(self.menuContextTree)


    def menuContextTree(self, point):
        # Infos about the node selected.
        index = self.ui.treeWidget.indexAt(point)

        if not index.isValid():
            return

        item = self.ui.treeWidget.itemAt(point)
        name = item.text(0)  # The text of the node.

        # We build the menu.
        menu = QtWidgets.QMenu()
        action = menu.addAction("Souris au-dessus de")
        action = menu.addAction(name)
        menu.addSeparator()
        action_1 = menu.addAction("Choix 1")
        action_2 = menu.addAction("Choix 2")
        action_3 = menu.addAction("Choix 3")


        menu.exec_(self.ui.treeWidget.mapToGlobal(point))