在PyQt4中向listwidget添加右键单击功能

Ric*_*mes 2 python contextmenu qlistwidget pyqt4

我试图使用Python为PyQt4中的列表小部件中的项添加右键单击功能.我想像一个弹出的上下文菜单,显示有按钮,点击时应该执行一些功能.

如何在右键单击每个项目时弹出上下文菜单?

Ric*_*mes 10

我想出了一个非常简单的方法来完成这项工作并且完美无缺.在ControlMainWindow类中添加以下内容以将Context菜单策略初始化为CustomeContextMenu,其中listWidget_extractedmeters将是您的QListWidget的名称:

    self.listWidget_extractedmeters.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
self.listWidget_extractedmeters.connect(self.listWidget_extractedmeters,QtCore.SIGNAL("customContextMenuRequested(QPoint)" ), self.listItemRightClicked)
Run Code Online (Sandbox Code Playgroud)

然后在ControlMainwindow类中,以下函数允许您添加上下文菜单项并调用执行某些功能的功能:

def listItemRightClicked(self, QPos): 
    self.listMenu= QtGui.QMenu()
    menu_item = self.listMenu.addAction("Remove Item")
    self.connect(menu_item, QtCore.SIGNAL("triggered()"), self.menuItemClicked) 
    parentPosition = self.listWidget_extractedmeters.mapToGlobal(QtCore.QPoint(0, 0))        
    self.listMenu.move(parentPosition + QPos)
    self.listMenu.show() 

def menuItemClicked(self):
    currentItemName=str(self.listWidget_extractedmeters.currentItem().text() )
    print(currentItemName)
Run Code Online (Sandbox Code Playgroud)