最近做一个项目需要注册全局热键,在网上搜索发现有个第三方库 libqxt 中给出一个比较好的跨平台的解决方案,就是 QxtGlobalShortcut。

但是编译过程中发现这个库用到的QAbstractEventDispatcher::EventFilter在qt5.3.1中已经没了,所以我就自己改写了一下。

更改部分如下:

  在QxtGlobalShortcutPrivate类的前面添加如下代码,因为在qt5中需要用到QAbstractNativeEventFilter这个类

源文章地址http://www.cnblogs.com/AfterTheRainOfStars/p/3946313.html

  

 #if(QT_VERSION>=0x050000)
#include <QAbstractNativeEventFilter>
#endif

然后将

class QxtGlobalShortcutPrivate : public QxtPrivate<QxtGlobalShortcut>

改为

 class QxtGlobalShortcutPrivate : public QxtPrivate<QxtGlobalShortcut>
#if(QT_VERSION>=0x050000)
, public QAbstractNativeEventFilter
#endif

再将

 static QAbstractEventDispatcher::EventFilter prevEventFilter;
static bool eventFilter(void* message);

修改为

 #if(QT_VERSION<0x050000)
static QAbstractEventDispatcher::EventFilter prevEventFilter;
static bool eventFilter(void* message);
#else
bool nativeEventFilter(const QByteArray &eventType, void *message, long *result);
#endif

然后分别在qxtglobalshortcut_mac.cpp,qxtglobalshortcut_win.cpp,qxtglobalshortcut_x11.cpp中将

bool QxtGlobalShortcutPrivate::eventFilter(void* message)

函数的实现改为如下:

 #if(QT_VERSION<0x050000)
bool QxtGlobalShortcutPrivate::eventFilter(void* message)
{
原本函数体内的代码;
}
#else
bool QxtGlobalShortcutPrivate::nativeEventFilter(const QByteArray &, void *message, long *)
{
同 eventFilter函数内的代码
}
#endif

经过这样修改以后就能用在qt5.3.1上面了,而且不影响在原本的qt4上使用

代码下载地址:http://download.csdn.net/detail/zhangyspa/7842941

另外,关于QxtGlobalShortcut的使用方法可以参考这个博客

http://blog.csdn.net/dbzhang800/article/details/6302816

最新文章

  1. weui 图片弹框
  2. Python笔记-集合,拷贝
  3. 以sysdba身份登录oracle报ORA-1031权限不足错误之完美分析
  4. stm32cube--通用定时器--产生pwm波
  5. C语言中的fread和fwrite
  6. HTML5中DOM元素的querySelector/querySelectorAll的工作机制
  7. Codeforces Round #188 (Div. 2) B. Strings of Power 水题
  8. angular $q服务的用法
  9. input的样式简介
  10. jquery刷新iframe页面的方法(兼容主流)
  11. Codeforces Round #383 (Div. 2) B. Arpa’s obvious problem and Mehrdad’s terrible solution
  12. window.location的路径
  13. JDBC完成的三个基本工作
  14. C# - LINQ 语言集成查询
  15. Qt支持哪些硬件通信协议???
  16. IT人保护视力的10个有效方法
  17. FFT算法小结
  18. fillder--信息面板显示请求耗时列
  19. c# 仿微信二维码生成
  20. 自定义RPC框架--基于JAVA实现

热门文章

  1. mysql数据库从删库到跑路之mysql表操作
  2. Get started on your own KD 8 custom colorway
  3. MySQL临时表的简单用法(复制)
  4. Spring-1-E Game(HDU 5011)解题报告及测试数据
  5. redis安全设置
  6. Linux 实时性能测试工具——Cyclictest
  7. 同时执行2条不同sql
  8. Spark高级数据分析&#183; 2数据分析
  9. 摄像头PIN脚功能作用
  10. idea Jetty deployment