一、 在按钮中设置快捷键
1.1 通过控件文本中的 & 符号
在按钮、菜单项等控件的文本中,用 & 符号指定快捷键(Alt + 字母),这是最直接的方式:
// 按钮:Alt+B 触发
QPushButton *btn = new QPushButton("&Browse");
// 菜单项:Alt+F 打开文件菜单
QMenu *fileMenu = menuBar()->addMenu("&File");
fileMenu->addAction("&Open", this, &MainWindow::openFile); // Alt+O 触发Open
- 效果:
&后的字母会显示下划线,提示用户按Alt+字母触发。 - 适用场景:按钮、菜单项等与控件直接关联的快捷键。
1.2 使用 QAction 定义快捷键
通过 QAction 的 setShortcut() 方法设置快捷键,支持更灵活的组合键(如 Ctrl+C):
#include <QAction>
#include <QKeySequence>
// 创建动作
QAction *copyAction = new QAction("Copy", this);
// 设置快捷键:Ctrl+C
copyAction->setShortcut(QKeySequence::Copy); // 内置常量
// 或自定义组合键:Ctrl+Shift+S
copyAction->setShortcut(QKeySequence("Ctrl+Shift+S"));
// 关联槽函数
connect(copyAction, &QAction::triggered, this, &MainWindow::copyContent);
// 添加到菜单或工具栏
editMenu->addAction(copyAction);
toolBar->addAction(copyAction);
- 常用内置常量:
QKeySequence::Cut(Ctrl+X)、QKeySequence::Paste(Ctrl+V)、QKeySequence::Undo(Ctrl+Z)等。 - 适用场景:菜单、工具栏按钮等需要快捷键的功能。
1.3 全局快捷键(不依赖窗口焦点)
若需要在程序任何界面(甚至窗口未激活时)触发快捷键,需使用 QShortcut 类:
#include <QShortcut>
// 在主窗口构造函数中定义
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) {
// 全局快捷键:F5 刷新
QShortcut *refreshShortcut = new QShortcut(QKeySequence("F5"), this);
connect(refreshShortcut, &QShortcut::activated, this, &MainWindow::refreshData);
// 全局快捷键:Ctrl+F 搜索
QShortcut *searchShortcut = new QShortcut(QKeySequence::Find, this);
connect(searchShortcut, &QShortcut::activated, this, &MainWindow::showSearchDialog);
}
- 特点:即使窗口未获得焦点,快捷键仍能生效(如浏览器的F5刷新)。
- 注意:避免与系统或其他程序的全局快捷键冲突(如Ctrl+Alt+Del)。
1.4 自定义快捷键(复杂组合)
对于特殊组合键(如 Alt+数字、Ctrl+Alt+字母),可直接通过字符串定义:
// Alt+1 触发功能1
QAction *action1 = new QAction("功能1", this);
action1->setShortcut(QKeySequence("Alt+1"));
// Ctrl+Alt+S 触发保存
QShortcut *saveShortcut = new QShortcut(QKeySequence("Ctrl+Alt+S"), this);
1.5 在UI设计器中设置
在Qt Designer中,可直接为控件设置快捷键:
- 选中按钮/菜单项,在右侧属性面板的
text中输入&字母(如&Save)。 - 对于
QAction,在属性面板的shortcut中直接输入快捷键(如Ctrl+S)。
436

被折叠的 条评论
为什么被折叠?



