您的位置:首页 > 编程语言 > Qt开发

pyqt右键菜单

2015-12-10 09:04 549 查看
从Qt文档Qt::ContextMenuPolicy的值可以看出,实现右键菜单的方式有三种,这对于所有继承于QWidget的类都是通用的,在用每一种方式实现之前都要调用QWidget::setContextMenuPolicy(Qt::ContextMenuPolicy)方法,将要需要设置右键菜单的组件的ContextMenuPolicy值设为相应的值,下面我分享一下用Qt::CustomContextMenu方式实现右键菜单的例子,用的是python语言,因为python比较简单。
#coding=utf-8 importsys fromPyQt4importQtGui fromPyQt4.QtCoreimportQt classMainWindow(QtGui.QMainWindow): def__init__(self): super(MainWindow,self).__init__() self.createContextMenu() defcreateContextMenu(self): ''' 创建右键菜单 ''' #必须将ContextMenuPolicy设置为Qt.CustomContextMenu #否则无法使用customContextMenuRequested信号 self.setContextMenuPolicy(Qt.CustomContextMenu) self.customContextMenuRequested.connect(self.showContextMenu) #创建QMenu self.contextMenu=QtGui.QMenu(self) self.actionA=self.contextMenu.addAction(u'动作A') self.actionB=self.contextMenu.addAction(u'动作B') self.actionC=self.contextMenu.addAction(u'动作C') #将动作与处理函数相关联 #这里为了简单,将所有action与同一个处理函数相关联, #当然也可以将他们分别与不同函数关联,实现不同的功能 self.actionA.triggered.connect(self.actionHandler) self.actionB.triggered.connect(self.actionHandler) self.actionB.triggered.connect(self.actionHandler) defshowContextMenu(self,pos): ''' 右键点击时调用的函数 ''' #菜单显示前,将它移动到鼠标点击的位置 self.contextMenu.move(self.pos()+pos) self.contextMenu.show() defactionHandler(self): ''' 菜单中的具体action调用的函数 ''' print'actionhandler' if__name__=='__main__': app=QtGui.QApplication(sys.argv) window=MainWindow() window.show() sys.exit(app.exec_())
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: