我尝试创建一个单击鼠标右键时出现的菜单,我已经按照了一些教程,但是当我将它们放入我的代码中并进行更改时,他们就赢了。工作。
这是我的代码:
def First(self):
FirstFrame = QtGui.QFrame()
FirstFrame.setFixedSize(230,660)
# LIST VIEW FOLDER
self.folders_lv = QtGui.QTreeView()
self.folders_lv.
# DEFINE THE FUNCTION FOR FIRST FRAME
Firstbox = QtGui.QGridLayout()
Firstbox.addWidget(self.folders_lv,3,0,1,4)
Firstbox.setColumnStretch(1, 1)
FirstFrame.setLayout(Firstbox)
self.folders_lv.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
self.customContextMenuRequested.connect(self.showMenu())
return FirstFrame
def showMenu(self, pos):
menu= QtGui.QMenu(self)
menu.addAction(QtGui.QAction("Item 1", menu))
menu.addAction(QtGui.QAction("Item 2", menu))
menu.addAction(QtGui.QAction("Item 3", menu))
menu.popup(self.mapToGlobal(pos))
答案 0 :(得分:1)
连接信号时需要传递函数 object ,所以摆脱括号:
self.folders_lv.customContextMenuRequested.connect(self.showMenu)
此外,在showMenu
广告位中,您可能需要:
menu.popup(self.folders_lv.viewport().mapToGlobal(pos))