Привет, я работаю над проектом в Python 3.5 и Pyqt5, я хочу добавить правой кнопкой мыши элемент TreeWidget, чтобы я мог создать контекстное меню с действиями, но я не нашел этого в PyQt5. Спасибо .
На самом деле проблема решена, поэтому вы добавляете контекстное меню правой кнопкой мыши в области 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)
Вам нужно создать свой собственный 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()