qt QShortcut详解

news/2024/11/9 5:15:07/
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_OBJECTpublic: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.ppmy.cn/news/1545536.html

相关文章

矩阵的奇异值分解SVD

为了论述矩阵的奇异值与奇异值分解!需要下面的结论!

6款IntelliJ IDEA插件,让Spring和Java开发如虎添翼

文章目录 1、SonarLint2、JRebel for IntelliJ3、SwaggerHub插件4、Lombok插件5、RestfulTool插件6、 Json2Pojo插件7、结论 对于任何Spring Boot开发者来说&#xff0c;两个首要的目标是最大限度地提高工作效率和确保高质量代码。IntelliJ IDEA 是目前最广泛使用的集成开发环境…

计算机网络——TCP篇

TCP篇 基本认知 TCP和UDP的区别? TCP 和 UDP 可以使用同一个端口吗&#xff1f; 可以的 传输层中 TCP 和 UDP在内核中是两个完全独立的软件模块。可以根据协议字段来选择不同的模块来处理。 TCP 连接建立 TCP 三次握手过程是怎样的&#xff1f; 一次握手:客户端发送带有 …

动手学深度学习9.8. 束搜索-笔记练习(PyTorch)

本节课程地址&#xff1a;63 束搜索【动手学深度学习v2】_哔哩哔哩_bilibili 本节教材地址&#xff1a;9.8. 束搜索 — 动手学深度学习 2.0.0 documentation 本节开源代码&#xff1a;...>d2l-zh>pytorch>chapter_multilayer-perceptrons>beam-search.ipynb 束搜…

计算机网络——路由器构成

算路由表是分布式去算——你算你的&#xff0c;我算我的 输出队列非先来先传 调度发生在哪里 缓存队列一般是应对——来数据方向的速度过快问题

Qt自定义控件:汽车速度表

1、功能 制作一个汽车速度表 2、实现 从外到内进行绘制&#xff0c;初始化画布&#xff0c;画渐变色外圈&#xff0c;画刻度&#xff0c;写刻度文字&#xff0c;画指针&#xff0c;画扇形&#xff0c;画内圈渐变色&#xff0c;画黑色内圈&#xff0c;写当前值 3、效果 4、源…

练习LabVIEW第四十四题

学习目标&#xff1a; 计算学生三门课(语文&#xff0c;数学&#xff0c;英语)的平均分&#xff0c;并根据平均分划分成绩等级。要求输出等级A,B,C,D,E。90分以上为A&#xff0c;80&#xff5e;89为B&#xff0c;70&#xff5e;79为C&#xff0c;60&#xff5e;69为D&#xff…

mac电脑如何远程登录自己购买的阿里云服务器

密码登录 示例 ssh root125.12.45.32 # 其中root是用户名&#xff0c;125.12.45.32是阿里云服务器的公网ipjava0904weigongdeMBP ~ % ssh root106.15.186.127 The authenticity of host 106.15.186.127 (106.15.186.127) cant be established. ED25519 key fingerprint is SH…