前言
设置右键菜单有很多种方法,这里只介绍思路,可以用于各种方法。
教程
第一步,添加一个QMenu用于显示菜单
self.menu = QMenu(self) # 创建菜单
self.menu.addAction(QAction(u'编辑 ', self, triggered=self.edit))
self.menu.addAction(QAction(u'删除 ', self, triggered=lambda: self.takeItem(self.currentRow())))
第二步,重写mousePressEvent
注意这里的 self.itemAt(e.pos()),用于判断右键菜单是否处于一个Item上,否则不显示,当然你也可以通过这个判断来实现不同地方显示不同的菜单,比如空白地方新建。
def mousePressEvent(self, e: QMouseEvent) -> None:
super(TagListWidget, self).mousePressEvent(e)
if e.button() == Qt.RightButton and self.itemAt(e.pos()):
self.menu.exec(e.globalPos())