zoukankan      html  css  js  c++  java
  • qt 注册热键

    1. 将所需的库添加到您的qmake项目(.PRO文件)
    LIBS += 
        -lUser32
    

    2.在代码中包含所需的头文件。

    #include <windows.h>
    
    1. 在程序开始时注册热键
    // 热键id
    #define HOT_KEY_ALT_CTRL_M 0
    #define HOT_KEY_CTRL_A 1
    
    MainWindow::MainWindow(QWidget *parent)
        : QMainWindow(parent)
        , ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    
        // ALT + CTRL + M
        if (!RegisterHotKey(HWND(winId()), HOT_KEY_ALT_CTRL_M, MOD_ALT | MOD_CONTROL, 0x4D))
        {
            qDebug() << "注册热键 ALT + CTRL + M ok.";
        }
    
        // CTRL + A
        if (!RegisterHotKey(HWND(winId()), HOT_KEY_CTRL_A, MOD_CONTROL, 0x41))
        {
            qDebug() << "注册热键  CTRL + A ok.";
        }
    }
    
    1. 重写MainWindow应用程序中的nativeEvent函数

    先申明

    bool nativeEvent(const QByteArray &eventType, void *message, long *result);
    

    在实现

    bool MainWindow::nativeEvent(const QByteArray &eventType, void *message, long *result)
    {
        Q_UNUSED(eventType);
        Q_UNUSED(result);
        MSG* msg = static_cast<MSG*>(message);
        if (msg->message == WM_HOTKEY)
        {
            switch (msg->wParam) {
            case HOT_KEY_ALT_CTRL_M:
                qDebug() << "触发了: ALT + CTRL + M";
                break;
            case HOT_KEY_CTRL_A:
                qDebug() << "触发了: CTRL + A";
                break;
            default:
                qDebug() << "被注入了其他热键.";
            }
            return true;
        }
        return false;
    }
    

    ok...

  • 相关阅读:
    SQLServer基本函数
    XP极限编程
    中日完全相同的四字成语
    SQL Server和Oracle的常用函数对比
    HTTP请求头概述
    XP(Extreme Programming)
    查看汉字各种编码值
    XP极限编程(中英文对照)
    http 头信息详解
    ASP内置对象详解
  • 原文地址:https://www.cnblogs.com/ajanuw/p/12847826.html
Copyright © 2011-2022 走看看