QKeyEvent 类
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 |
详细描述
当按键被按下或释放时,按键事件会被发送到具有键盘输入焦点的控件。
按键事件包含一个特殊的确认标志,表示接收者是否会处理该按键事件。此标志默认对 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。
key 是事件循环应监听的 Qt::Key 代码。如果 key 为 0,事件不是已知按键的结果;例如,它可能是组合序列或键盘宏的结果。《i translate="no">modifiers 存储键盘修饰符,而给定的 text 是按键生成的 Unicode 文本。如果 autorep 为 true,isAutoRepeat() 将为 true。 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。
key 是事件循环应监听的 Qt::Key 代码。如果 key 为 0,事件不是已知按键的结果;例如,它可能是组合序列或键盘宏的结果。《i translate="no">modifiers 存储键盘修饰符,而给定的 text 是按键生成的 Unicode 文本。如果 autorep 为 true,isAutoRepeat() 将为 true。 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。
© 2024 Qt公司有限公司。本文档中包含的文档贡献属于相应所有权人。提供的文档依据自由软件基金会发布的GNU自由文档许可协议版本1.3进行许可。Qt及其相关标志是Qt公司有限公司在芬兰和/或世界其他国家的商标。所有其他商标均为相应所有权人的财产。