PyQt5 Щелкните правой кнопкой мыши элемент TreeWidget

Привет, я работаю над проектом в Python 3.5 и Pyqt5, я хочу добавить правой кнопкой мыши элемент TreeWidget, чтобы я мог создать контекстное меню с действиями, но я не нашел этого в PyQt5. Спасибо .

1

Решение

На самом деле проблема решена, поэтому вы добавляете контекстное меню правой кнопкой мыши в области 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

Другие решения

Вам нужно создать свой собственный 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()
1

По вопросам рекламы [email protected]