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