Header:#include < QShortcut >
qmake:QT += widgets
Inherits:QObject
Properties
autoRepeat : bool
context : Qt::ShortcutContext
enabled : bool
key : QKeySequence
whatsThis : QString
Public Functions
QShortcut(const QKeySequence &key, QWidget *parent, const char *member = nullptr, const char *ambiguousMember = nullptr, Qt::ShortcutContext context = Qt::WindowShortcut)
QShortcut(QWidget *parent)
virtual ~QShortcut()
bool autoRepeat() const
Qt::ShortcutContext context() const
int id() const
bool isEnabled() const
QKeySequence key() const
QWidget *parentWidget() const
void setAutoRepeat(bool on)
void setContext(Qt::ShortcutContext context)
void setEnabled(bool enable)
void setKey(const QKeySequence &key)
void setWhatsThis(const QString &text)
QString whatsThis() const
Signals
void activated()
void activatedAmbiguously()
Detailed Description
QShortcut类提供了一种将键盘快捷键连接到Qt的信号和插槽机制的方法,这样当快捷键被执行时,对象就可以得到通知。可以将快捷键设置为包含描述键盘快捷键所需的所有按键,包括Shift、Ctrl和Alt等修饰键的状态。
在某些小部件上,在字符前面使用’&‘将自动为该字符创建助记符(快捷方式),例如:" e&exit "将创建快捷键Alt+X(使用’&&'来显示实际的&号)。小部件可能会对给定的快捷方式进行消费和执行操作。在X11上,“&”符号将不显示,字符将加下划线。在Windows上,快捷键通常不会显示,直到用户按下Alt键,但这是一个用户可以更改的设置。在Mac上,快捷方式默认是禁用的。调用qt_set_sequence_auto_mnemonic()来启用它们。然而,由于助记快捷键不符合Aqua的指导原则,Qt将不显示带下划线的快捷键字符。
对于使用菜单的应用程序,使用QMenu类中提供的便利函数在创建菜单项时为其分配键盘快捷键可能更方便。或者,快捷方式可以与QAction类中的其他类型的操作相关联。
为特定小部件创建快捷方式的最简单方法是使用键序列构造快捷方式。例如:
shortcut = new QShortcut(QKeySequence(tr("Ctrl+O", "File|Open")),parent);
当用户键入给定快捷方式的键序列时,将发出该快捷方式的activated()信号。(在模棱两可的情况下,会发出activatedambiguous()信号。)当快捷方式的父部件正在接收事件时,Qt的事件循环会“监听”快捷方式。
可以使用setKey()设置快捷键序列,并使用key()检索快捷键序列。快捷方式可以使用setEnabled()来启用或禁用,并且可以使用setWhatsThis()来设置“What’s This?”帮助文本。
See also QShortcutEvent, QKeySequence, and QAction.
Property Documentation
autoRepeat : bool
此属性保存快捷方式是否可以自动重复
如果为true,则当按住键盘快捷键组合时,该快捷键将自动重复,前提是系统上启用了键盘自动重复。默认值为true。
这个属性是在Qt 4.2中引入的。
访问函数:
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
此属性保存是否启用快捷方式
当QShortcutEvent事件与快捷键的key()序列匹配时,启用的快捷键会发出activated()或activatedambiguous()信号。
如果应用程序处于WhatsThis模式,快捷方式将不会发出信号,而是显示“这是什么?”文本。
默认情况下,此属性为true。
访问函数:
bool isEnabled() const
void setEnabled(bool enable)
See also 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)
whatsThis : QString
此属性保存快捷方式的“What's This?”帮助文本
当应用程序处于“这是什么?”模式并且用户键入快捷键()序列时,将显示文本。
要在菜单项上设置“这是什么?”帮助(带或不带快捷键),请在该项的操作上设置帮助。
默认情况下,此属性包含一个空字符串。
访问函数:
QString whatsThis() const
void setWhatsThis(const QString &text)
See also QWhatsThis::inWhatsThisMode() and QAction::setWhatsThis().
Member Function Documentation
QShortcut::QShortcut(const QKeySequence &key, QWidget *parent, const char *member = nullptr, const char *ambiguousMember = nullptr, Qt::ShortcutContext context = Qt::WindowShortcut)
为父小部件构造一个QShortcut对象。快捷键对其父操作,监听与键序列匹配的qshortcuteevents。根据事件的模糊性,快捷键将调用成员函数,如果按键在快捷键的上下文中,则调用ambiguoumember函数。
QShortcut::QShortcut(QWidget *parent)
为父小部件构造一个QShortcut对象。由于没有指定快捷键序列,因此该快捷键不会发出任何信号。
See also setKey().
[signal] void QShortcut::activated()
当用户键入快捷键的键序列时发出此信号。
See also activatedAmbiguously().
[signal] void QShortcut::activatedAmbiguously()
当在键盘上键入一个键序列时,只要它与多个快捷键的开头匹配,就说它是不明确的。
当快捷键序列完成时,如果键序列仍然不明确(即,它是一个或多个其他快捷键的开始),则会触发activatedambiguous()。在这种情况下,activated()信号不会发出。
See also activated().
[virtual] QShortcut::~QShortcut()
Destroys the shortcut.
int QShortcut::id() const
Returns the shortcut's ID.
See also QShortcutEvent::shortcutId().
QWidget *QShortcut::parentWidget() const
Returns the shortcut's parent widget.