Qt5全局热键-QxtGlobalShortcut
2024-08-29 01:19:15
最近做一个项目需要注册全局热键,在网上搜索发现有个第三方库 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
最新文章
- weui 图片弹框
- Python笔记-集合,拷贝
- 以sysdba身份登录oracle报ORA-1031权限不足错误之完美分析
- stm32cube--通用定时器--产生pwm波
- C语言中的fread和fwrite
- HTML5中DOM元素的querySelector/querySelectorAll的工作机制
- Codeforces Round #188 (Div. 2) B. Strings of Power 水题
- angular $q服务的用法
- input的样式简介
- jquery刷新iframe页面的方法(兼容主流)
- Codeforces Round #383 (Div. 2) B. Arpa’s obvious problem and Mehrdad’s terrible solution
- window.location的路径
- JDBC完成的三个基本工作
- C# - LINQ 语言集成查询
- Qt支持哪些硬件通信协议???
- IT人保护视力的10个有效方法
- FFT算法小结
- fillder--信息面板显示请求耗时列
- c# 仿微信二维码生成
- 自定义RPC框架--基于JAVA实现