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 |
受保护函数
| QKeyEvent(QKeyEvent &&) | |
| QKeyEvent & | operator=(QKeyEvent &&) |
| QKeyEvent & | operator=(const QKeyEvent &other) |
详细说明
按下或释放按键时,键事件会发送给拥有键盘输入焦点的控件。
键事件包含一个特殊的接受标志,用于指示接收者是否将处理该键事件。对于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 。这些额外数据由快捷键系统使用,以确定应触发哪些快捷键。
[protected delete] QKeyEvent::QKeyEvent(QKeyEvent &&)
通过移动构造一个QKeyEvent 实例。该函数已被删除。
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 。
[protected delete] QKeyEvent &QKeyEvent::operator=(QKeyEvent &&)
将other 按移动赋值方式赋值给该QKeyEvent 实例。该函数已被删除。
[noexcept protected default] QKeyEvent &QKeyEvent::operator=(const QKeyEvent &other)
将other 复制并赋值给该QKeyEvent 实例。
© 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.