pyqt右键菜单

 

从Qt文档Qt::ContextMenuPolicy的值可以看出,实现右键菜单的方式有三种,这对于所有继承于QWidget的类都是通用的,在用每一种方式实现之前都要调用QWidget::setContextMenuPolicy(Qt::ContextMenuPolicy)方法,将要需要设置右键菜单的组件的ContextMenuPolicy值设为相应的值,下面我分享一下用Qt::CustomContextMenu方式实现右键菜单的例子,用的是python语言,因为python比较简单。

#coding=utf-8

import sys

from PyQt4 import QtGui
from PyQt4.QtCore import Qt

class MainWindow(QtGui.QMainWindow):
	def __init__(self):
		super(MainWindow, self).__init__()
		self.createContextMenu()


	def createContextMenu(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)


	def showContextMenu(self, pos):
		'''
		右键点击时调用的函数
		'''
		# 菜单显示前,将它移动到鼠标点击的位置
		self.contextMenu.move(self.pos() + pos)
		self.contextMenu.show()


	def actionHandler(self):
		'''
		菜单中的具体action调用的函数
		'''
		print 'action handler'


if __name__=='__main__':
	app = QtGui.QApplication(sys.argv)
	window = MainWindow()
	window.show()
	sys.exit(app.exec_())
 

转载于:https://my.oschina.net/dddttttt/blog/541818

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值