文档章节

Qt处理平台相关事件的方式

WangRichard
 WangRichard
发布于 2013/11/23 22:16
字数 365
阅读 27
收藏 0
点赞 0
评论 0

      我们知道,Qt本身自带的事件处理是相当方便与强大的。在众多QObject的子类中,都有一个虚函数event(),我们可以通过重写其实现方式来获得作用于该应用上的一些事件,这在GUI应用中更是用的相当之多。然而,如果涉及到处理一些系统底层的事件,诸如操作系统关机或者注销休眠这类的事件,event()虚方法可能就心有余而力不足了。不过好在QObject还是给了使用者一些特别的方法来处理这些相当底层的系统事件。

     在Qt4里,我们可通过重写QObject的虚函数x11Event()、winEvent()等来达到获取平台相关事件的方式,当然这个方法只限于Qt4。在Qt5里,这些方法已经被一个新的方法给替换掉了:nativeEvent(const QByteArray & eventType, void * message, long * result)。这个方法的使用也是相当简单,重写她并获取我们所需的message即可,不过需要注意各平台的消息或者事件的类型。至于具体该如何利用,接下来就是参考各平台的相关API了。

     除了以上方式管理事件,我们也可以用eventfilter,具体的使用方式类似上面,细节还请参考手册了。

© 著作权归作者所有

共有 人打赏支持
WangRichard
粉丝 4
博文 9
码字总数 11049
作品 0
东城
其他
QT 5.1 Alpha1 发布,支持 Android 和 iOS

Qt 5.0 刚刚发布三个月后,Digia 发布了全新版本 Qt 5.1 的第一个 Alpha 测试版本,该版本最值得关注的就是首次对 Android 和 iOS 平台的支持。 月初时 Qt 开发者就已宣布正在为 iOS 的移植做...

oschina ⋅ 2013/04/09 ⋅ 29

QObject 之 Thread Affinity

注意,本文试图通过源码解释下面的问题: 子QObject必须在其parent关联的线程内创建 调用moveToThread()的对象其parent必须为0 事件驱动的对象要在单一线程内使用 QTimer、network模块的QTc...

晨曦之光 ⋅ 2012/05/08 ⋅ 0

QtInternal 之 Timer

注意:本文翻译自 http://developer.qt.nokia.com 中的 QtTimers ,中文译文见 简体中文版 ,如果你对翻译wiki感兴趣,请参考Wiki中文帮助 定时器的 API Qt 提供了两套 计时器的 API QObjec...

晨曦之光 ⋅ 2012/05/08 ⋅ 0

正确使用Qt多线程

QThread的常见特性: run()是线程的入口,就像main()对于应用程序的作用。QThread中对run()的默认实现调用了exec(),从而创建一个QEventLoop对象,由其处理该线程事件队列(每一个线程都有一...

braverong ⋅ 2013/12/26 ⋅ 2

QDesktopWidget 乱谈?

在QWidget的众多派生类之中,QDesktopWidget比较特殊的一个(另一个比较特殊的是QAxWidget,定义了信号槽,却不使用Q_OBJECT这个宏)。 我们知道QDesktopWidget的作用就是获取和桌面相关的各...

晨曦之光 ⋅ 2012/05/08 ⋅ 0

如何保持GUI的响应流畅(QT平台)

引子   一般来说耗时较长的操作,分为计算密集型操作和IO密集型操作,对于这两类操作如何提高响应速度呢?   而从操作的本质上来说,操作又可分为不可分解操作,如在第三方库中耗时较长的...

mickelfeng ⋅ 2013/05/18 ⋅ 0

Qt 全局热键 QxtGlobalShortcut 分析与使用举例

不少人有给程序添加全局热键的需求。网上随便一搜,就能找到不少介绍windows下如何实现的方式: 首先: 使用 RegisterHotKey和 UnregisterHotKey 注册和反注册热键 其次: 在事件全局过滤器 ...

晨曦之光 ⋅ 2012/05/08 ⋅ 0

保持Qt程序中GUI的响应流畅

如何使Qt 平台中的GUI保持响应流畅?一般来说耗时较长的操作,分为计算密集型操作和IO密集型操作,对于这两类操作如何提高响应速度。 而从操作的本质上来说,操作又可分为不可分解操作,如在...

水海云 ⋅ 2012/03/24 ⋅ 0

【转】QT事件传递与事件过滤器

【概览】 1、重载特定事件函数。 比如: mousePressEvent(),keyPressEvent(), paintEvent() 。 2、重新实现QObject::event()。 这一般用在Qt没有提供该事件的处理函数时。也就是,我们增加...

罗兵 ⋅ 2015/02/08 ⋅ 0

QT定时器QTimer

在Qt中使用定时器有两种方法,一种是使用QObiect类的定时器;一种是使用QTimer类。定时器的精确性依赖于操作系统和硬件,大多数平台支持20ms的精确度。 1.QObject类的定时器 QObject是所有Q...

barsoom ⋅ 2012/10/29 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JavaScript零基础入门——(八)JavaScript的数组

JavaScript零基础入门——(八)JavaScript的数组 欢迎大家回到我们的JavaScript零基础入门,上一节课我们讲了有关JavaScript正则表达式的相关知识点,便于大家更好的对字符串进行处理。这一...

JandenMa ⋅ 今天 ⋅ 0

sbt网络问题解决方案

转自:http://dblab.xmu.edu.cn/blog/maven-network-problem/ cd ~/.sbt/launchers/0.13.9unzip -q ./sbt-launch.jar 修改 vi sbt/sbt.boot.properties 增加一个oschina库地址: [reposit......

狐狸老侠 ⋅ 今天 ⋅ 0

大数据,必须掌握的10项顶级安全技术

我们看到越来越多的数据泄漏事故、勒索软件和其他类型的网络攻击,这使得安全成为一个热门话题。 去年,企业IT面临的威胁仍然处于非常高的水平,每天都会看到媒体报道大量数据泄漏事故和攻击...

p柯西 ⋅ 今天 ⋅ 0

Linux下安装配置Hadoop2.7.6

前提 安装jdk 下载 wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.7.6/hadoop-2.7.6.tar.gz 解压 配置 vim /etc/profile # 配置java环境变量 export JAVA_HOME=/opt/jdk1......

晨猫 ⋅ 今天 ⋅ 0

crontab工具介绍

crontab crontab 是一个用于设置周期性被执行的任务工具。 周期性执行的任务列表称为Cron Table crontab(选项)(参数) -e:编辑该用户的计时器设置; -l:列出该用户的计时器设置; -r:删除该...

Linux学习笔记 ⋅ 今天 ⋅ 0

深入Java多线程——Java内存模型深入(2)

5. final域的内存语义 5.1 final域的重排序规则 1.对于final域,编译器和处理器要遵守两个重排序规则: (1)在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用...

江左煤郎 ⋅ 今天 ⋅ 0

面试-正向代理和反向代理

面试-正向代理和反向代理 Nginx 是一个高性能的反向代理服务器,但同时也支持正向代理方式的配置。

秋日芒草 ⋅ 今天 ⋅ 0

Spring 依赖注入(DI)

1、Setter方法注入: 通过设置方法注入依赖。这种方法既简单又常用。 类中定义set()方法: public class HelloWorldOutput{ HelloWorld helloWorld; public void setHelloWorld...

霍淇滨 ⋅ 昨天 ⋅ 0

马氏距离与欧氏距离

马氏距离 马氏距离也可以定义为两个服从同一分布并且其协方差矩阵为Σ的随机变量之间的差异程度。 如果协方差矩阵为单位矩阵,那么马氏距离就简化为欧氏距离,如果协方差矩阵为对角阵,则其也...

漫步当下 ⋅ 昨天 ⋅ 0

聊聊spring cloud的RequestRateLimiterGatewayFilter

序 本文主要研究一下spring cloud的RequestRateLimiterGatewayFilter GatewayAutoConfiguration @Configuration@ConditionalOnProperty(name = "spring.cloud.gateway.enabled", matchIfMi......

go4it ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部