✅ 一、QShortcut 是什么? QShortcut 是 Qt 提供的类,用于给窗口部件添加快捷键操作,比如 Ctrl+S 保存,Ctrl+O 打开文件等。 它可以捕捉某个特定键盘组合,并触发你定义的行为(通常是一个槽函数) 二、基本语法和用法 QShortcut *shortcut = new QShortcut(QKeySequence("Ctrl+O" ), this); connect(shortcut, &QShortcut::activated, this, &YourClass::onOpenFile); QKeySequence("Ctrl+ *shortcut = new QShortcut(QKeySequence("Ctrl+Q"), &w); shortcut->setContext(Qt::WindowShortcut); 小结 功能 QShortcut 做什么 快捷键触发 捕获键盘组合如 Ctrl+S 自动发信号 快捷键触发自动执行某个函数 跨平台兼容 自动适配 Mac / Windows / Linux 支持作用域控制
在 init_action 函数中,我们新建了四个 QShortCut 实例,分别支持快捷键实现缩小、放大、下一页、上一页的操作。 self.widget = widget self.init_action() def init_action(self): zoom_minus = QShortcut (QKeySequence("Ctrl+-"), self) zoom_minus.activated.connect(self.minus) zoom_plus = QShortcut QKeySequence("Ctrl+="), self) zoom_plus.activated.connect(self.plus) switch_left = QShortcut QKeySequence(Qt.Key_Left), self) switch_left.activated.connect(self.left) switch_right = QShortcut
{ ui->label->setText("当前值为: " + QString::number(value)); } 4)修改 widget.cpp 构造函数,增加快捷键 使⽤ QShortCut 快捷键触发时, 会发出 QShortcut::activated 信号, 我们连接到⾃⼰写的 slot 函数. // 设置快捷键 QShortcut* shortCut1 = new QShortcut(this); shortCut1->setKey(QKeySequence("-")); connect(shortCut1, &QShortcut:: activated, this, &Widget::subValue); QShortcut* shortCut2 = new QShortcut(this); shortCut2->setKey(QKeySequence("=")); connect(shortCut2, &QShortcut::activated, this, &Widget:
命令搜索代码中的符号: uos@uos-loongsun-PC:/opt/apps/com.tencent.wechat/files$ strings wechat |grep "QApplication" QShortcut QShortcut: Initialize QApplication before calling 'setAutoRepeat'. QShortcut: Initialize QApplication before calling 'QShortcut'. QShortcut: Initialize QApplication before calling 'setContext'. QApplication before a QWidget QApplicationStateChangeEvent( QApplication::notify: Unexpected null receiver QShortcut
,实现滑动条的键盘控制: 依旧先编辑.ui文件: 编写代码: #include "widget.h" #include "ui_widget.h" #include <QShortcut 类 //需要两个快捷键,- 进行减少,=进行增加(+和=是同一个按钮) QShortcut* shortCut1 = new QShortcut(this); shortCut1 ->setKey(QKeySequence("-")); QShortcut* shortCut2 = new QShortcut(this); shortCut2->setKey(QKeySequence ("=")); //使用信号槽,感知到快捷键被按下 connect(shortCut1, &QShortcut::activated, this, &Widget::subValue) ; connect(shortCut2, &QShortcut::activated, this, &Widget::addValue); } Widget::~Widget() {
例如,一个按钮有一个QShortcut(快捷键)对象作为其子对象。当我们删除按钮的时候,这个快捷键理应被删除。这是合理的。 QWidget是能够在屏幕上显示的一切组件的父类。
widget.cpp 使用QShortCut 类设置快捷键. 快捷键触发时, 会发出 QShortcut::activated 信号, 我们连接到⾃⼰写的 slot 函数. #include "widget.h" #include "ui_widget.h" #include <QShortcut> Widget::Widget(QWidget *parent) : * ShortCut1 = new QShortcut(this); ShortCut1->setKey(QKeySequence("-")); connect(ShortCut1,& QShortcut::activated,this,&Widget::SubValue); QShortcut * ShortCut2 = new QShortcut(this); ShortCut2 ->setKey(QKeySequence("+")); connect(ShortCut2,&QShortcut::activated,this,&Widget::AddValue); }
C++的话,可以使用QShortCut类,QML可以使用ShortCut。 但是QShortCut和ShortCut,只在窗口或应用程序在focus时,才能使用快捷键,并非全局快捷键。
# Ctrl+O 打开文件夹 open_sc = QShortcut(QKeySequence("Ctrl+O"), self) open_sc.activated.connect (self.open_folder_dialog) # Ctrl+W 关闭当前标签 close_sc = QShortcut(QKeySequence("Ctrl+W"), lambda: self.tab_manager.close_tab(self.tab_manager.currentIndex())) # Ctrl+Q 退出 quit_sc = QShortcut
self.input_text.textChanged.connect(lambda: self.output_text.setFixedHeight(self.input_text.height())) # 快捷键支持 QShortcut
tickPosition 刻度的位置 tickInterval 刻度的密集程度 设置按钮的尺寸大小,用拖动滑动条的方式来进行 QSlider 快捷键shortcut 这是一个关键的知识,用来设置快捷键 QShortcut
(1)在界面上创建滑动条和 label (2)修改 widget.cpp 构造函数,增加快捷键,创建 valueChanged 的 slot 函数 使用 QShortCut 类设置快捷键 快捷键触发时, 会发出 QShortcut::activated 信号,我们连接到自己写的 slot 函数(下面等下会写的) (3)编写自定义 slot 函数,并且执行程序,观察效果,可以看到此时按下 - 和 = 就可以调整
支持透明窗口、鼠标穿透和拦截,可自定义截图蒙层;强大的绘图 API:QPainter + QPixmap 组合,可高效实现涂鸦与文字绘制;系统交互:Qt 提供对剪贴板(QClipboard)、快捷键(QShortcut
例如,⼀个按钮有⼀个 QShortcut(快捷键)对象作为其子对象。当删除按钮的时候,这个快捷键理应被删除。这是合理的. QWidget是能够在屏幕上显⽰的⼀切组件的父类。
globalY(); } 实现效果如下: 我们这里就通过事件 获取到 鼠标点击 的位置 mouseEvent 这个函数 其实按左键、右键、滚轮都可以触发的,甚至还有 前进 后退侧键 三、键盘按键事件 Qt 中 QShortCut
例如,一个按钮有一个 QShortcut(快捷键)对象作为其子对象。当删除按钮的时候,这个快捷键理应被删除。这是合理的。 Qwidget 是能够在屏幕上显示的一切组件的父类。
然后,我们将这些插槽连接到initShortcuts方法中的一些热键: void ScreenCapturer::initShortcuts() { new QShortcut( Qt::Key_Escape, this, SLOT(closeMe())); new QShortcut(Qt::Key_Return, this, SLOT(confirmCapture
在拥有QKeySequence之后,我们可以将其与QShortcut或QAction类结合使用以触发不同的函数/插槽。 本章稍后将介绍信号/插槽的介绍。