QShortcut Class

QShortcut 类用于创建键盘快捷方式。更多

头文件: #include <QShortcut>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
继承: QObject

属性

公共功能

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

信号

详细说明

QShortcut 类提供了一种将键盘快捷键与 Qt 的信号和槽机制连接起来的方法,这样当快捷键被执行时,对象就能得到通知。快捷方式可设置为包含描述键盘快捷方式所需的所有按键,包括修改键的状态,如ShiftCtrlAlt

在 widget 应用程序中,某些 widget 可以在字符前使用"&"。这将自动为该字符创建一个助记符(快捷键),例如,"E&xit "将创建快捷键Alt+X (使用"&&"可显示实际的安培号)。Widget 可能会使用给定的快捷方式并对其执行操作。在 X11 上,不会显示 "amppersand",该字符将以下划线标出。在 Windows 上,通常在用户按下Alt 键之前不会显示快捷方式,但这是用户可以更改的设置。在 Mac 上,快捷方式默认为禁用。调用qt_set_sequence_auto_mnemonic() 可启用它们。不过,由于助记符快捷方式不符合 Aqua 的指导方针,因此 Qt 不会显示下划线快捷方式字符。

对于使用菜单的应用程序,使用QMenu 类中提供的方便函数在创建菜单项时为其分配键盘快捷方式可能会更方便。另外,快捷键还可以与QAction 类中的其他操作类型相关联。

为特定部件创建快捷方式的最简单方法是使用键序构建快捷方式。例如

shortcut = new QShortcut(QKeySequence(tr("Ctrl+O", "File|Open")),
                         parent);

当用户键入指定快捷方式的key sequence 时,就会发出该快捷方式的activated() 信号。(如果有歧义,则发出activatedAmbiguously() 信号)。当快捷方式的父 Widget 接收事件时,快捷方式会被 Qt 的事件循环 "监听"。

快捷方式的键序可以通过setKey() 设置,也可以通过key() 获取。快捷方式可以通过setEnabled() 启用或禁用,还可以通过setWhatsThis() 设置 "这是什么?"帮助文本。

另请参阅 QShortcutEventQKeySequenceQAction

属性文档

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("Ctrl+P");           // Ctrl+P, e.g. to print document

默认情况下,该属性包含一个空键序。

访问函数

QKeySequence key() const
void setKey(const QKeySequence &key)

成员函数文档

[explicit] QShortcut::QShortcut(QObject *parent)

parent 构造一个 QShortcut 对象,它应该是QWindowQWidget

由于未指定快捷键序列,快捷方式不会发出任何信号。

另请参阅 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 对象,它应该是QWindowQWidget

快捷方式对其父对象进行操作,监听与standardKey 匹配的QShortcutEvent。根据事件的模糊性,快捷方式将调用member 函数,如果按键位于快捷方式的context 中,则调用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 对象,它应该是QWindowQWidget

快捷方式对其父对象进行操作,监听与key 序列相匹配的QShortcutEvents。根据事件的模糊性,快捷方式将调用member 函数,如果按键是在快捷方式的context 中,则调用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

functorfunctorAmbiguous 可以是指向context 对象成员函数的指针。

如果context 对象被销毁,则不会调用functorfunctorAmbiguous

此函数在 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

functorfunctorAmbiguous 可以是指向context 对象成员函数的指针。

如果context 对象被销毁,则不会调用functorfunctorAmbiguous

[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 中引入。

另请参阅 keysetKeys()。

QWidget *QShortcut::parentWidget() const

返回快捷方式的父 widget。

[since 6.0] void QShortcut::setKeys(QKeySequence::StandardKey key)

将触发器设置为与标准键key 匹配的触发器。

此函数在 Qt 6.0 中引入。

另请参阅 keykeys() 。

[since 6.0] void QShortcut::setKeys(const QList<QKeySequence> &keys)

keys 设置为触发快捷键的按键序列列表。

此函数在 Qt 6.0 中引入。

另请参阅 keykeys()。

void QShortcut::setWhatsThis(const QString &text)

设置快捷方式的 "这是什么?"帮助text

当 Widget 应用程序处于 "这是什么?"模式,且用户键入快捷键key() 序列时,将显示该文本。

要在菜单项(无论是否有快捷键)上设置 "这是什么?"帮助,请在该项的操作上设置帮助。

默认情况下,帮助文本为空字符串。

在不使用部件的应用程序中,该函数不起作用。

另请参阅 whatsThis()、QWhatsThis::inWhatsThisMode() 和QAction::setWhatsThis()。

QString QShortcut::whatsThis() const

返回快捷方式的 "这是什么?"帮助文本。

另请参阅 setWhatsThis()。

© 2025 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.