QWidget上下文菜单处理函数
QWidget类是Qt中所有可视化部件的基类,其很多函数都是虚函数,能被子类重写以表现不同形式和功能,今天来学习一下QWdiget的事件处理函数。
事件是鼠标、键盘或系统因其自身某些状态发生改变而引起的,根据不同的发生源分为鼠标事件,键盘事件和系统事件。而发生源的不同状态发生改变又引起不同事件的发生,如鼠标左键单击事件,双击事件,右键单击双击事件等。
在python中,不同的事件都有相应的类对其进行描述。这些类一般通过参数,都描述了事件的各种状态,如鼠标事件QMouseEvent在初始化过程中就包含事件类型(如: QEvent::MouseButtonPress, QEvent::MouseButtonRelease, QEvent::MouseButtonDblClick, orQEvent::MouseMove)、哪个按键(左中右)、点击时鼠标的位置等信息。
当事件发生后,事件(事件类的实例)被路由给目标窗口(根据事件携带的信息匹配目标窗口),目标窗口再根据事件携带的信息匹配处理该事件的响应函数,如果顺利匹配,则调用该事件处理函数完成响应。因此事件处理函数的参数一般都是相对应的事件类。
一、virtual void contextMenuEvent(QContextMenuEvent *event)
响应上下文菜单事件(单击鼠标右键事件),用于产生一个上下文菜单(即右键菜单或弹出式菜单)
说明:
1.只有组件的contextMenuPlolicy属性为Qt::DefaultContextMenu时该事件响应函数才会被调用。默认情况下,该属性的值正是此值。
如果不想右键弹出菜单,可以通过函数setContextMenuPolicy(Qt::ContextMenuPolicy policy)将该属性设置为其它值,以不响应上下文事件。可选的参数如下:
| Constant | Value | Description |
|---|---|---|
Qt::NoContextMenu |
0 |
组件不具有上下文菜单,上下文菜单被推到组件的父窗口 |
Qt::PreventContextMenu |
4 |
该小部件不具有上下文菜单,与NoContextMenu相反,处理不会延迟到小部件的父级。 这意味着所有的鼠标右键事件都可以通过QWidget :: mousePressEvent()和QWidget :: mouseReleaseEvent()来保证传递到控件本身。 |
Qt::DefaultContextMenu |
1 |
组件的 QWidget::contextMenuEvent()被调用 |
Qt::ActionsContextMenu |
2 |
将组件QWidget::actions()返回的QActions当作上下文菜单项,右键后显示出来 |
Qt::CustomContextMenu |
3 |
组件发射 QWidget::customContextMenuRequested(Qpoint pt) signal.如果要自定义菜单,用这个枚举值,并自定义一个处理函数。注意由于该信号携带着点击处的坐标,因此在处理与坐标有关的右键事件时必须要用这个枚举值(比如:表格控件右键某个表头要对这列进行排序需要获取点击的列) |
2.重写该函数
def contextMenuEvent(self, event):
self.menu = QMenu('AA', self)
self.menu.addAction('bb')
self.menu.exec(cur.pos())#鼠标显示
至于contextMenuPlolicy属性的另外几种枚举值如何使用,请参考:http://blog.csdn.net/seanyxie/article/details/5825174
QWidget上下文菜单处理函数的更多相关文章
- 【jQuery】smartMenu右键自定义上下文菜单插件(似web QQ)
(前端用重点整理博客地址)链接地址:http://www.cnblogs.com/atree/archive/2011/06/30/jQuery-smartMenu-javascript.html 一 ...
- Android进阶(二十八)上下文菜单ContextMenu使用案例
上下文菜单ContextMenu使用案例 前言 回顾之前的应用程序,发现之前创建的选项菜单无法显示了.按照正常逻辑来说,左图中在"商品信息"一栏中应该存在选项菜单,用户可进行分享等 ...
- 安卓开发笔记——Menu菜单组件(选项菜单,上下文菜单,子菜单)
菜单是用户界面中最常见的元素之一,使用非常频繁,在Android中,菜单被分为如下三种,选项菜单(OptionsMenu).上下文菜单(ContextMenu)和子菜单(SubMenu). 菜单的实现 ...
- 不得不吐槽的Android PopupWindow的几个痛点(实现带箭头的上下文菜单遇到的坑)
说到PopupWindow,我个人感觉是又爱又恨,没有深入使用之前总觉得这个东西应该很简单,很好用,但是真正使用PopupWindow实现一些效果的时候总会遇到一些问题,但是即便是人家的api有问题, ...
- android上下文菜单
XML: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmln ...
- RCP:为指定的导航器添加上下文菜单
可以参考Eclipse的Help->Help Content下的: Platform Plug-in Developer Guide > Programmer's Guide > P ...
- 【WP 8.1开发】上下文菜单
在桌面系统中,别说是开发者,相信有资格考得过计算机一级的人都知道什么叫一下文菜单,或者叫右键菜单. 为了让操作更方便,在手机应用程序中,也应当有这样的菜单.上下文菜单之所以有”上下文“之说,是因为通常 ...
- Android成长日记-ContextMenu实现上下文菜单
一. ContextMenu的组成 标题以及标题图标 菜单内容 菜单内容的点击事件 二. ContextMenu与OptionMenu的区别 OptionMenu对应的是activity,一个acti ...
- Java基础之扩展GUI——高亮元素、上下文菜单、移动旋转元素、自定义颜色(Sketcher 10)
窗口应用程序. 本例在上一版的基础上实现了高亮元素.移动元素.上下文菜单.旋转元素.设置自定义颜色. 1.自定义常量包: // Defines application wide constants p ...
随机推荐
- 读取Excel中的数据到DataSet
读取Excel中的数据到DataSet 1.引用命名空间 using System.Data.OleDb; 2.输入Excel文件,输出DataSet public DataSet ExecleDs( ...
- SVN版本号控制软件-图片含义具体解释
转载请注明出处:http://blog.csdn.net/zhuwentao2150/article/details/51195154 自己定义SVN图标显示风格 SVN的图标是能够自己定义风格的 右 ...
- html5小趣味知识点系列(一)pubdate
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- jquery基础研究学习【基础】
2017年6月6日15:07:58 该看:http://www.runoob.com/jquery/jquery-fade.html 淡入淡出 jQuery 教程 ...
- hdu_1226超级密码(BFS)
超级密码 Problem Description Ignatius花了一个星期的时间终于找到了传说中的宝藏,宝藏被放在一个房间里,房间的门用密码锁起来了,在门旁边的墙上有一些关于密码的提示信息:密码是 ...
- element-ui table 点击分页table滚动到顶部
在做项目中,碰到一个问题,table加了固定头,内容可滚动,当滚到table底边时,点击分页后还在底边 解决方法:设置table的 ref='multipleTable' //切换分页的方法加上下面这 ...
- 监控httpd的shell脚本
#!/bin/bash # Apache httpd进程监控shell # 如果你在使用RHEL / CentOS / Fedora Linux,使用这个重启命令 RESTART="/sbi ...
- Linux学习路线指南
转载的,感觉写的挺好的,我自己知识复制了下,忘记了转载地址,抱歉! Linux学习路线指南 很多同学接触Linux不多,对Linux平台的开发更是一无所知.而现在的趋势越来越表明,作为一个优秀的软件开 ...
- 从 零开始 无差错 装好nginx+PHP
由于这两天 一直有人追问 nginx为何报错,为何php没装好啥的,大多原因是 : 1.编译与yum混合安装,导致很多包的路径不对,进而报错 2.yum源比较旧,导致 与新版本的php不匹配 3.安装 ...
- 用cocos2d-html5做的消除类游戏《英雄爱消除》(2)——Block设计实现
Block可以说是这个游戏的核心类,它除了包含自身的一些属性和方法外还添加了对触摸事件的响应. 我们先来看下源码吧 /** * Power by html5中文网(html5china.com) * ...