文档章节

pyqt右键菜单

Sophia_tj
 Sophia_tj
发布于 2015/12/10 09:04
字数 327
阅读 301
收藏 0

 

从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_())
 

© 著作权归作者所有

Sophia_tj
粉丝 16
博文 86
码字总数 125580
作品 0
天津
程序员
私信 提问
pyqt sqlite3 icu fts3 fts4 enabled 。全文搜索 功能

目标:windows下让pyqt测试程序支持sqlite3 icu fts3/4的全文搜索功能。 环境: windows XP pyqt 安装文件 PyQt-Py2.7-x86-gpl-4.9.6-1.exe pyqt 源码包 PyQt-win-gpl-4.9.4.zip python 版本...

kjpioo
2013/02/09
1K
0
PyQt 5.0 发布,完全支持 Qt 5.0

PyQt 5.0 发布了,该版本增加对 Qt 5.0 的支持。 PyQt是Qt库的Python版本。PyQt3支持Qt1到Qt3。 PyQt4支持Qt4。它的首次发布也是在1998年,但是当时它叫 PyKDE,因为开始的时候SIP和PyQt没有...

oschina
2013/06/18
6.9K
15
PyQt 4.10 发布,支持 QT 5.0

PyQt 4.10 发布了,该版本最主要的目的是为了支持 Qt 5.0. PyQt是Qt库的Python版本。PyQt3支持Qt1到Qt3。 PyQt4支持Qt4。它的首次发布也是在1998年,但是当时它叫 PyKDE,因为开始的时候SIP...

oschina
2013/03/04
2.5K
5
PyQt 4.9.5 发布,Qt 库的 Python 版本

PyQt 4.9.5 支持 Qt 4.8.3 和 5.0.0 Beta1. PyQt是Qt库的Python版本。PyQt3支持Qt1到Qt3。 PyQt4支持Qt4。它的首次发布也是在1998年,但是当时它叫 PyKDE,因为开始的时候SIP和PyQt没有分开。...

oschina
2012/10/01
1K
3
PyQt 4.8.5 发布

PyQt是Qt库的Python版本。PyQt3支持Qt1到Qt3。 PyQt4支持Qt4。它的首次发布也是在1998年,但是当时它叫 PyKDE,因为开始的时候SIP和PyQt没有分开。PyQt是用SIP写的。PyQt遵从奇趣的许可模式,...

红薯
2011/08/11
1K
4

没有更多内容

加载失败,请刷新页面

加载更多

Spring Security 自定义登录认证(二)

一、前言 本篇文章将讲述Spring Security自定义登录认证校验用户名、密码,自定义密码加密方式,以及在前后端分离的情况下认证失败或成功处理返回json格式数据 温馨小提示:Spring Security...

郑清
20分钟前
1
0
php yield关键字以及协程的实现

php的yield是在php5.5版本就出来了,而在初级php界却很少有人提起,我就说说个人对php yield的理解 Iterator接口 在php中,除了数组,对象可以被foreach遍历之外,还有另外一种特殊对象,也就是继承...

冻结not
33分钟前
2
0
servlet请求和响应的过程

本文转载于:专业的前端网站➥servlet请求和响应的过程 1.加载 Servlet类被加载到Java虚拟机中,并且实例化。在这个过程中,web容器(例如tomcat)会调用Servlet类的公开无参构造函数,产生一...

前端老手
33分钟前
2
0
golang 1.13 errors 包来了,不用写“err 气功波”代码

引 这篇是对 errors 包 的姿势挖掘 气功波错误代码 从 http.Get()返回的错误 判断 syscall.ECONNREFUSED 错误.以前要对 go 标准库 error 结构有点熟悉,才能写出下面的代码 func CmdErr(err ...

guonaihong
37分钟前
25
0
喜玛拉雅已听书单

时间倒序排 书名 作者 状态 唐砖 孑与2 进行中 死灵之书(克苏鲁神话合集) 阿卜杜拉·阿尔哈萨德 进行中 赡养人类 刘慈欣 完结 赡养上帝 刘慈欣 完结 中国太阳 刘慈欣 完结 中国太阳 刘慈欣...

Alex_Java
38分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部