zoukankan      html  css  js  c++  java
  • Qt5全局热键-QxtGlobalShortcut

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

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

    更改部分如下:

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

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

      

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

       然后将

    class QxtGlobalShortcutPrivate : public QxtPrivate<QxtGlobalShortcut>

    改为

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

    再将

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

    修改为

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

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

    bool QxtGlobalShortcutPrivate::eventFilter(void* message)

    函数的实现改为如下:

     1 #if(QT_VERSION<0x050000)
     2 bool QxtGlobalShortcutPrivate::eventFilter(void* message)
     3 {
     4     原本函数体内的代码;
     5 }
     6 #else
     7 bool QxtGlobalShortcutPrivate::nativeEventFilter(const QByteArray &, void *message, long *)
     8 {
     9   同  eventFilter函数内的代码
    10 }
    11 #endif

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

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


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

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

  • 相关阅读:
    CAP分布式
    专职DBA-MySQL数据库开篇
    os.sep
    DocStrings
    Python如何获取脚本的参数
    LVM基础命令
    VoAndEntityTrans
    短信倒计时
    springboot在eclipse上搭建项目一(无页面)
    springboot问题
  • 原文地址:https://www.cnblogs.com/AfterTheRainOfStars/p/3946313.html
Copyright © 2011-2022 走看看