QShortcut Class
QShortcut 类用于创建键盘快捷键。更多内容...
| 标题: | #include <QShortcut> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
| 继承自: | QObject |
- 所有成员列表,包括继承的成员
- 已弃用的成员
- QShortcut 属于事件类。
属性
- autoRepeat : bool
- context : Qt::ShortcutContext
- enabled : bool
- key : QKeySequence
公共函数
| QShortcut(QObject *parent) | |
(since 6.0) | QShortcut(QKeySequence::StandardKey standardKey, QObject *parent, const char *member = nullptr, const char *ambiguousMember = nullptr, Qt::ShortcutContext context = Qt::WindowShortcut) |
| QShortcut(const QKeySequence &key, QObject *parent, const char *member = nullptr, const char *ambiguousMember = nullptr, Qt::ShortcutContext context = Qt::WindowShortcut) | |
(since 6.0) | QShortcut(QKeySequence::StandardKey key, QObject *parent, Functor functor, Qt::ShortcutContext shortcutContext = Qt::WindowShortcut) |
| QShortcut(const QKeySequence &key, QObject *parent, Functor functor, Qt::ShortcutContext shortcutContext = Qt::WindowShortcut) | |
(since 6.0) | QShortcut(QKeySequence::StandardKey key, QObject *parent, const QObject *context, Functor functor, Qt::ShortcutContext shortcutContext = Qt::WindowShortcut) |
| QShortcut(const QKeySequence &key, QObject *parent, const QObject *context, Functor functor, Qt::ShortcutContext shortcutContext = Qt::WindowShortcut) | |
(since 6.0) | QShortcut(QKeySequence::StandardKey key, QObject *parent, const QObject *context, Functor functor, FunctorAmbiguous functorAmbiguous, Qt::ShortcutContext shortcutContext = Qt::WindowShortcut) |
| QShortcut(const QKeySequence &key, QObject *parent, const QObject *context, Functor functor, FunctorAmbiguous functorAmbiguous, Qt::ShortcutContext shortcutContext = Qt::WindowShortcut) | |
(since 6.0) | QShortcut(QKeySequence::StandardKey key, QObject *parent, const QObject *context1, Functor functor, const QObject *context2, FunctorAmbiguous functorAmbiguous, Qt::ShortcutContext shortcutContext = Qt::WindowShortcut) |
| QShortcut(const QKeySequence &key, QObject *parent, const QObject *context1, Functor functor, const QObject *context2, FunctorAmbiguous functorAmbiguous, Qt::ShortcutContext shortcutContext = Qt::WindowShortcut) | |
| virtual | ~QShortcut() |
| bool | autoRepeat() const |
| Qt::ShortcutContext | context() const |
| bool | isEnabled() const |
| QKeySequence | key() const |
(since 6.0) QList<QKeySequence> | keys() const |
| QWidget * | parentWidget() const |
| void | setAutoRepeat(bool on) |
| void | setContext(Qt::ShortcutContext context) |
| void | setEnabled(bool enable) |
| void | setKey(const QKeySequence &key) |
(since 6.0) void | setKeys(QKeySequence::StandardKey key) |
(since 6.0) void | setKeys(const QList<QKeySequence> &keys) |
| void | setWhatsThis(const QString &text) |
| QString | whatsThis() const |
信号
| void | activated() |
| void | activatedAmbiguously() |
详细说明
QShortcut 类提供了一种将键盘快捷键与 Qt的信号与槽机制关联的方法,以便在执行快捷键时通知相关对象。快捷键的设置可以包含描述该快捷键所需的所有按键操作,包括修饰键的状态,例如Shift 、Ctrl 和Alt 。
在控件应用程序中,某些控件可以在字符前使用“&”符号。这将自动为该字符创建一个助记符(即快捷键),例如“E&xit”将生成快捷键Alt+X (若需显示实际的“&”符号,请使用“&&”)。 控件可能会接收并执行给定快捷键对应的操作。在 X11 环境下,"&" 符号不会显示,该字符会被加下划线。在 Windows 系统中,快捷键通常不会显示,直到用户按下Alt 键,但用户可以更改此设置。 在 Mac 上,快捷键默认处于禁用状态。调用qt_set_sequence_auto_mnemonic() 可启用它们。但是,由于助记符快捷键不符合 Aqua 设计规范,Qt XML 不会将快捷键字符显示为带下划线的样式。
对于使用菜单的应用程序,利用QMenu 类中提供的便利函数,在创建菜单项时为其分配键盘快捷键可能会更方便。此外,也可以在QAction 类中将快捷键与其他类型的操作相关联。
为特定小部件创建快捷键的最简单方法是使用键序列来构建该快捷键。例如:
shortcut = new QShortcut(QKeySequence(tr("Ctrl+O", "File|Open")),
parent);当用户输入某个快捷键对应的key sequence 时,该快捷键的activated()信号会被触发。(若存在歧义,则触发activatedAmbiguously()信号。)当快捷键所属小部件的父小部件正在接收事件时,Qt的事件循环会“监听”该快捷键。
快捷键的键序列可通过setKey() 设置,并通过key() 获取。可通过setEnabled() 启用或禁用快捷键,并可通过setWhatsThis() 为其设置“这是什么?”帮助文本。
另请参阅 QShortcutEvent 、QKeySequence 和QAction 。
属性文档
autoRepeat : bool
该属性控制快捷键是否支持自动重复
如果为 true,当按住键盘快捷键组合时,该快捷键将自动重复,前提是系统已启用键盘自动重复功能。默认值为 true。
访问函数:
| bool | autoRepeat() const |
| void | setAutoRepeat(bool on) |
context : Qt::ShortcutContext
该属性保存快捷键有效的上下文
快捷键的上下文决定了在何种情况下允许触发该快捷键。默认上下文为Qt::WindowShortcut ,这意味着如果父窗口(即包含该快捷键的小部件)是当前活动顶级窗口的子窗口,则允许触发该快捷键。
默认情况下,该属性设置为Qt::WindowShortcut 。
访问函数:
| Qt::ShortcutContext | context() const |
| void | setContext(Qt::ShortcutContext context) |
enabled : bool
该属性表示快捷键是否已启用
当发生与该快捷键的key()序列匹配的QShortcutEvent 时,已启用的快捷键会发出activated()或activatedAmbiguously()信号。
如果应用程序处于WhatsThis 模式,该快捷键将不会发出信号,而是显示“这是什么?”的文本。
默认情况下,此属性为true 。
访问函数:
| bool | isEnabled() const |
| void | setEnabled(bool enable) |
另请参阅 whatsThis 。
key : QKeySequence
该属性存储快捷键的主键序列
这是一个键序列,可选地包含 Shift、Ctrl 和 Alt 键的组合。键序列可以通过多种方式提供:
setKey(0); // no signal emitted
setKey(QKeySequence()); // no signal emitted
setKey(0x3b1); // Greek letter alpha
setKey(Qt::Key_D); // 'd', e.g. to delete
setKey('q'); // 'q', e.g. to quit
setKey(Qt::CTRL | Qt::Key_P); // Ctrl+P, e.g. to print document
setKey(tr("Ctrl+P")); // Ctrl+P, e.g. to print document默认情况下,该属性包含一个空键序列。
访问函数:
| QKeySequence | key() const |
| void | setKey(const QKeySequence &key) |
成员函数文档
[explicit] QShortcut::QShortcut(QObject *parent)
为parent 构建一个QShortcut对象,该 应为QWindow 或QWidget 。
由于未指定任何快捷键序列,该快捷键不会触发任何信号。
另请参阅 setKey()。
[explicit, since 6.0] QShortcut::QShortcut(QKeySequence::StandardKey standardKey, QObject *parent, const char *member = nullptr, const char *ambiguousMember = nullptr, Qt::ShortcutContext context = Qt::WindowShortcut)
为parent 创建一个QShortcut对象,该 应为QWindow 或QWidget 。
该快捷键作用于其父对象,监听与standardKey 匹配的QShortcutEvent。根据事件的歧义性,如果按键操作发生在快捷键的context 内,则该快捷键将调用member 函数;否则将调用ambiguousMember 函数。
该函数于 Qt 6.0 中引入。
[explicit] QShortcut::QShortcut(const QKeySequence &key, QObject *parent, const char *member = nullptr, const char *ambiguousMember = nullptr, Qt::ShortcutContext context = Qt::WindowShortcut)
为parent 创建一个QShortcut对象,该 应为QWindow 或QWidget 。
该快捷键作用于其父对象,监听与key 序列匹配的QShortcutEvent事件。根据事件的多义性,如果按键操作发生在快捷键的context 内,该快捷键将调用member 函数;否则将调用ambiguousMember 函数。
[since 6.0] template <typename Functor> QShortcut::QShortcut(QKeySequence::StandardKey key, QObject *parent, Functor functor, Qt::ShortcutContext shortcutContext = Qt::WindowShortcut)
这是一个 QShortcut 便利构造函数,它将快捷方式的activated() 信号连接到functor 。
这是一个重载函数。
该函数自 Qt 6.0 起引入。
template <typename Functor> QShortcut::QShortcut(const QKeySequence &key, QObject *parent, Functor functor, Qt::ShortcutContext shortcutContext = Qt::WindowShortcut)
这是一个 QShortcut 的便捷构造函数,它将快捷方式的activated() 信号连接到functor 上。
这是一个重载函数。
[since 6.0] template <typename Functor> QShortcut::QShortcut(QKeySequence::StandardKey key, QObject *parent, const QObject *context, Functor functor, Qt::ShortcutContext shortcutContext = Qt::WindowShortcut)
这是一个 QShortcut 的便捷构造函数,它将快捷方式的 `activated()` 信号连接到 `functor`。
functor 可以是context 对象的某个成员函数的指针。
如果context 对象被销毁,则不会调用functor 。
这是一个重载函数。
该函数在 Qt 6.0 中引入。
template <typename Functor> QShortcut::QShortcut(const QKeySequence &key, QObject *parent, const QObject *context, Functor functor, Qt::ShortcutContext shortcutContext = Qt::WindowShortcut)
这是一个 QShortcut 便捷构造函数,它将快捷方式的 `activated()` 信号连接到 `functor`。
functor 可以是context 对象的某个成员函数的指针。
如果context 对象被销毁,则不会调用functor 。
这是一个重载函数。
[since 6.0] template <typename Functor, typename FunctorAmbiguous> QShortcut::QShortcut(QKeySequence::StandardKey key, QObject *parent, const QObject *context, Functor functor, FunctorAmbiguous functorAmbiguous, Qt::ShortcutContext shortcutContext = Qt::WindowShortcut)
这是一个 QShortcut 便捷构造函数,它将快捷方式的activated() 信号连接到functor ,并将activatedAmbiguously() 信号连接到functorAmbiguous 。
functor 和functorAmbiguous 可以是context 对象的成员函数的指针。
如果context 对象被销毁,则不会调用functor 和functorAmbiguous 。
这是一个重载函数。
该函数是在 Qt 6.0 中引入的。
template <typename Functor, typename FunctorAmbiguous> QShortcut::QShortcut(const QKeySequence &key, QObject *parent, const QObject *context, Functor functor, FunctorAmbiguous functorAmbiguous, Qt::ShortcutContext shortcutContext = Qt::WindowShortcut)
这是一个 QShortcut 便捷构造函数,它将快捷方式的 `activated()` 信号连接到 `functor `,并将 `activatedAmbiguously()` 信号连接到 `functorAmbiguous`。
functor 和functorAmbiguous 可以是context 对象的成员函数的指针。
如果context 对象被销毁,则functor 和functorAmbiguous 将不会被调用。
这是一个重载函数。
[since 6.0] template <typename Functor, typename FunctorAmbiguous> QShortcut::QShortcut(QKeySequence::StandardKey key, QObject *parent, const QObject *context1, Functor functor, const QObject *context2, FunctorAmbiguous functorAmbiguous, Qt::ShortcutContext shortcutContext = Qt::WindowShortcut)
这是一个 QShortcut 便捷构造函数,它将快捷方式的 `activated()` 信号连接到 `functor `,并将 `activatedAmbiguously()` 信号连接到 `functorAmbiguous`。
functor 可以是context1 对象的成员函数指针。functorAmbiguous 可以是context2 对象的成员函数指针。
如果context1 对象被销毁,则不会调用functor 。如果context2 对象被销毁,则不会调用functorAmbiguous 。
这是一个重载函数。
该函数在 Qt 6.0 中引入。
template <typename Functor, typename FunctorAmbiguous> QShortcut::QShortcut(const QKeySequence &key, QObject *parent, const QObject *context1, Functor functor, const QObject *context2, FunctorAmbiguous functorAmbiguous, Qt::ShortcutContext shortcutContext = Qt::WindowShortcut)
这是一个 QShortcut 便捷构造函数,它将快捷方式的 `activated()` 信号连接到 `functor `,并将 `activatedAmbiguously()` 信号连接到 `functorAmbiguous`。
functor 可以是context1 对象的某个成员函数的指针。functorAmbiguous 可以是context2 对象的某个成员函数的指针。
如果context1 对象被销毁,则不会调用functor 。如果context2 对象被销毁,则不会调用functorAmbiguous 。
这是一个重载函数。
[virtual noexcept] QShortcut::~QShortcut()
删除该快捷方式。
[signal] void QShortcut::activated()
当用户输入快捷键的键序列时,会发出此信号。
另请参阅 activatedAmbiguously()。
[signal] void QShortcut::activatedAmbiguously()
当在键盘上输入一组键序列时,只要该键序列与多个快捷键的开头匹配,就称其为“模棱两可”。
当快捷键的按键序列输入完成时,如果该按键序列仍然存在歧义(即它是另一个或多个快捷键的开头),则会发出 activatedAmbiguously() 信号。在此情况下,不会发出activated() 信号。
另请参阅 activated()。
[since 6.0] QList<QKeySequence> QShortcut::keys() const
返回触发此快捷键的键序列列表。
该函数在 Qt 6.0 中引入。
QWidget *QShortcut::parentWidget() const
返回快捷方式的父控件。
[since 6.0] void QShortcut::setKeys(QKeySequence::StandardKey key)
将触发器设置为与标准键key 匹配的那些。
该函数在 Qt 6.0 中引入。
[since 6.0] void QShortcut::setKeys(const QList<QKeySequence> &keys)
将keys 设置为触发该快捷键的键序列列表。
该函数在 Qt 6.0 中引入。
void QShortcut::setWhatsThis(const QString &text)
设置快捷方式的“这是什么?”帮助内容text 。
当小部件应用程序处于“这是什么?”模式时,如果用户输入快捷键序列key(),将显示该文本。
若要在菜单项上设置“这是什么?”帮助(无论该菜单项是否带有快捷键),请在该菜单项的操作上设置帮助。
默认情况下,帮助文本为空字符串。
在未使用小部件的应用程序中,此函数无效。
另请参阅 whatsThis()、QWhatsThis::inWhatsThisMode() 和QAction::setWhatsThis()。
QString QShortcut::whatsThis() const
返回快捷方式的“这是什么?”帮助文本。
另请参阅 setWhatsThis()。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.