当前位置: 首页 > article >正文

qt QShortcut详解

1、概述

QShortcut是Qt框架中的一个类,它提供了一种创建键盘快捷键的方式。通过QShortcut,开发者可以将特定的键盘组合(如Ctrl+C、Alt+F4等)与应用程序中的动作(如复制、关闭窗口等)关联起来。当用户在应用程序中按下指定的键盘组合时,QShortcut会触发相应的动作。QShortcut简化了键盘快捷键的创建和管理,使得开发者能够为用户提供更加高效和便捷的交互方式。

2、重要方法

QShortcut类提供了多个方法来设置和管理快捷键。以下是一些重要的方法:

  • QShortcut(const QKeySequence &key, QWidget *parent, const char *member = nullptr, const char *ambient = nullptr): 构造函数,用于创建一个QShortcut对象,并指定快捷键、父组件、要触发的槽函数和是否作为环境快捷键(环境快捷键在应用程序的任何地方都可以触发,而不仅仅是父组件中)。
  • setKey(const QKeySequence &key): 设置快捷键。
  • key() const: 返回当前设置的快捷键。
  • setContext(Qt::ShortcutContext context): 设置快捷键的上下文(如窗口快捷键、应用程序快捷键等)。
  • context() const: 返回当前设置的快捷键上下文。
  • setAutoRepeat(bool enabled): 设置是否启用自动重复功能(当按住快捷键时,是否持续触发动作)。
  • isAutoRepeatEnabled() const: 返回是否启用了自动重复功能。
  • activated() const: 这是一个“伪方法”,用于连接信号。实际上,你应该连接activated(const QKeySequence &)信号。

注意:activated()方法实际上是一个信号,但在某些文档或示例中可能会误称为方法。正确的使用方式是连接activated(const QKeySequence &key)信号到槽函数。

3、重要信号

QShortcut类最重要的信号是:

  • void activated(): 当快捷键被触发时,这个信号被发射。
  • void activatedAmbiguously():快捷键被模糊触发时发出信号。

4、常用枚举类型

以下是 QShortcut 类中一些常用的枚举类型及其简要介绍:

Qt::ShortcutContext快捷键上下文:

  • Qt::WindowShortcut:快捷键在窗口范围内触发。
  • Qt::ApplicationShortcut:快捷键在整个应用程序范围内触发。
  • Qt::WidgetShortcut:快捷键在小部件范围内触发。
#include <QApplication>
#include <QMainWindow>
#include <QShortcut>
#include <QKeySequence>
#include <QDebug>

class MainWindow : public QMainWindow {
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr) : QMainWindow(parent) {
        // 创建一个快捷键,设置为Ctrl+Q,并连接到close()槽函数
        QShortcut *quitShortcut = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_Q), this);
        connect(quitShortcut, &QShortcut::activated, this, &QMainWindow::close);

        // 创建一个调试快捷键,设置为Ctrl+D,并连接到自定义槽函数
        QShortcut *debugShortcut = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_D), this);
        connect(debugShortcut, &QShortcut::activated, this, &MainWindow::debugShortcutActivated);
    }

private slots:
    void debugShortcutActivated() {
        qDebug() << "Debug shortcut activated!";
    }
};



int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    MainWindow window;
    window.show();

    return app.exec();
}

觉得有帮助的话,打赏一下呗。。

           


http://www.kler.cn/a/386939.html

相关文章:

  • 【Azure 架构师学习笔记】- Azure Function (2) --实操1
  • RV1126+FFMPEG推流项目(9)AI和AENC模块绑定,并且开启线程采集
  • 代码随想录算法训练营第三十五天-动态规划-01背包(二维)
  • 计算机网络 (41)文件传送协议
  • 深度学习项目--基于LSTM的火灾预测研究(pytorch实现)
  • 基础入门-反弹Shell渗透命令Reverse反向Bind正向利用语言文件下载多姿势
  • Docker Compose V2 安装
  • 大数据时代的数据分析:策略、方法与实践
  • 区块链技术在数字版权管理中的应用
  • Python安装与配置
  • 多路转接之Reactor
  • 定长内存池设计
  • 模型训练中GPU利用率低?
  • 在openwrt上跑golang程序
  • 缓存淘汰策略:Redis中的内存管理艺术
  • 前端-懒加载
  • 提瓦特幸存者4
  • Linux - 信号
  • Android GPU纹理数据拷贝
  • 谐振式DCDC设计与参数计算 - 笔记汇聚
  • 云轴科技ZStack助力新远科技开启化工行业智能制造新篇章
  • Spring Boot框架下的注解(完整版)
  • fpga开发原理图设计仿真分析
  • Kafka生产者如何提高吞吐量?
  • 使用 Redux 在 Flutter鸿蒙next 中实现状态管理
  • Excel:vba实现正则匹配