QKeyEvent Class
QKeyEvent 类描述按键事件。更多
头文件: | #include <QKeyEvent> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
继承: | QInputEvent |
- 所有成员的列表,包括继承成员
- QKeyEvent 属于事件类。
公共函数
QKeyEvent(QEvent::Type type, int key, Qt::KeyboardModifiers modifiers, const QString &text = QString(), bool autorep = false, quint16 count = 1) | |
QKeyEvent(QEvent::Type type, int key, Qt::KeyboardModifiers modifiers, quint32 nativeScanCode, quint32 nativeVirtualKey, quint32 nativeModifiers, const QString &text = QString(), bool autorep = false, quint16 count = 1, const QInputDevice *device = QInputDevice::primaryKeyboard()) | |
int | count() const |
bool | isAutoRepeat() const |
int | key() const |
(since 6.0) QKeyCombination | keyCombination() const |
bool | matches(QKeySequence::StandardKey key) const |
Qt::KeyboardModifiers | modifiers() const |
quint32 | nativeModifiers() const |
quint32 | nativeScanCode() const |
quint32 | nativeVirtualKey() const |
QString | text() const |
详细说明
按键事件会在按键被按下或释放时发送至键盘输入焦点的 widget。
按键事件包含一个特殊的接受标志,表示接收器是否会处理按键事件。QEvent::KeyPress 和QEvent::KeyRelease 默认设置了该标志,因此在处理按键事件时无需调用accept() 。对于QEvent::ShortcutOverride ,接收方需要明确接受事件以触发覆盖。在按键事件上调用ignore() 会将事件传播到父部件。事件会沿着父窗口部件链向上传播,直到某个窗口部件接受该事件或事件过滤器消耗该事件为止。
QWidget::setEnabled() 函数可用于启用或禁用部件的鼠标和键盘事件。
事件处理程序QWidget::keyPressEvent(),QWidget::keyReleaseEvent(),QGraphicsItem::keyPressEvent() 和QGraphicsItem::keyReleaseEvent() 可接收按键事件。
另请参阅 QFocusEvent 和QWidget::grabKeyboard()。
成员函数文档
QKeyEvent::QKeyEvent(QEvent::Type type, int key, Qt::KeyboardModifiers modifiers, const QString &text = QString(), bool autorep = false, quint16 count = 1)
构造一个关键事件对象。
type 参数必须是QEvent::KeyPress,QEvent::KeyRelease, 或QEvent::ShortcutOverride 。
Intkey 是事件循环应监听的Qt::Key 的代码。如果key 为 0,则事件不是已知按键的结果;例如,可能是编译序列或键盘宏的结果。modifiers 保存键盘修饰符,给定的text 是按键产生的 Unicode 文本。如果autorep 为真,则isAutoRepeat() 为真。count 是事件涉及的按键数。
QKeyEvent::QKeyEvent(QEvent::Type type, int key, Qt::KeyboardModifiers modifiers, quint32 nativeScanCode, quint32 nativeVirtualKey, quint32 nativeModifiers, const QString &text = QString(), bool autorep = false, quint16 count = 1, const QInputDevice *device = QInputDevice::primaryKeyboard())
构造一个关键事件对象。
type 参数必须是QEvent::KeyPress,QEvent::KeyRelease, 或QEvent::ShortcutOverride 。
Intkey 是事件循环应监听的Qt::Key 的代码。如果key 为 0,则事件不是已知按键的结果;例如,可能是编译序列或键盘宏的结果。modifiers 保存键盘修饰符,给定的text 是按键产生的 Unicode 文本。如果autorep 为真,则isAutoRepeat() 为真。count 是事件中涉及的按键数。
除了正常的键事件数据外,还包含nativeScanCode,nativeVirtualKey 和nativeModifiers 。快捷键系统使用这些额外数据来决定触发哪些快捷键。
int QKeyEvent::count() const
返回该事件涉及的键的个数。如果text() 不为空,则返回字符串的长度。
另请参见 Qt::WA_KeyCompression 。
bool QKeyEvent::isAutoRepeat() const
如果事件来自自动重复按键,则返回true
;如果来自初始按键,则返回false
。
请注意,如果该事件是部分由于自动重复按键而导致的多键压缩事件,该函数可能会返回 true 或 false,无法确定。
int QKeyEvent::key() const
返回按下或松开的键的代码。
键盘代码列表请参见Qt::Key 。这些代码与底层窗口系统无关。请注意,该函数不区分大写字母和非大写字母,为此请使用text() 函数(返回按键生成的 Unicode 文本)。
如果值为 0 或Qt::Key_unknown ,则表示该事件不是已知按键的结果;例如,它可能是编译序列、键盘宏或按键事件压缩的结果。
另请参阅 Qt::WA_KeyCompression 。
[since 6.0]
QKeyCombination QKeyEvent::keyCombination() const
返回一个QKeyCombination 对象,该对象包含此事件所携带的key() 和modifiers() 。
此函数在 Qt 6.0 中引入。
bool QKeyEvent::matches(QKeySequence::StandardKey key) const
如果关键事件符合给定的标准key ,则返回true
;否则返回false
。
Qt::KeyboardModifiers QKeyEvent::modifiers() const
返回事件发生后立即存在的键盘修改器标记。
警告: 不能总是相信此函数。例如,用户可以通过同时按下两个Shift 键并松开其中一个来混淆它。
另请参阅 QGuiApplication::keyboardModifiers().
quint32 QKeyEvent::nativeModifiers() const
返回按键事件的本地修改器。如果键事件不包含此数据,则返回 0。
注意: 即使键事件包含扩展信息,本地修改器也可能为 0。
quint32 QKeyEvent::nativeScanCode() const
返回按键事件的本地扫描代码。如果键事件不包含该数据,则返回 0。
注意: 即使键事件包含扩展信息,本地扫描代码也可能为 0。
quint32 QKeyEvent::nativeVirtualKey() const
返回键事件的本地虚拟键或键符号。如果键事件不包含此数据,则返回 0。
注意: 即使键事件包含扩展信息,本地虚拟键也可能为 0。
QString QKeyEvent::text() const
返回此密钥生成的 Unicode 文本。
文本不限于 Unicode 代码点的可打印范围,可能包括控制字符或其他 Unicode 类别的字符,包括QChar::Other_PrivateUse 。
文本也可能是空的,例如按下 Shift、Control、Alt 和 Meta 等修饰符键时(取决于平台)。key() 函数将始终返回一个有效值。
另请参见 Qt::WA_KeyCompression 。
© 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.