映射键按事件qt
Mapping key press event qt
如何检测用户按了哪个键?
试着在网上搜索,但找不到任何有趣的东西。
谢谢。
如果你想要全局检测按键(对应用程序快捷方式等有用),你需要通过首先重载QObject::eventFilter
来为应用程序创建一个QObject
的eventFilter:
bool cKeyPressEater::eventFilter(QObject *Object, QEvent *Event)
{
if (Event->type() == QEvent::KeyPress)
{
QKeyEvent *KeyEvent = (QKeyEvent*)Event;
switch(KeyEvent->key())
{
case Qt::Key_F1:
//do something
break;
default:
break;
}
}
}
…然后将该对象安装为应用程序的eventFilter
:
QObject *KeyPressEater = GetYourEventFilterObject();
QCoreApplication::instance()->installEventFilter(KeyPressEater);
否则,正如@Mat上面所说,只重载QWidget::keyPressEvent
。你需要按下setFocusPolicy
键,并且要有焦点才能获得按键。
相关文章:
- 如何在Qt 4.8中阻止/忽略/丢弃早于特定超时的用户输入事件
- 具有Qt事件循环的可移植通用共享库设置
- 如何通过拖动鼠标QT检查按钮?鼠标移动事件
- Qt:事件过滤器在显示 QCompleter 时不接收按键
- Qt 中的去抖动事件过滤器
- QT 事件过滤器 mouseEvent->pos().x() 始终为零,但 mouseEvent->pos().y() 工作正常
- Qt应用程序不响应鼠标和键盘事件
- Qt将鼠标移动事件转移到新窗口
- 如何从qml Keys.oPressed调用qt keyPressEvent(QKeyEvent*事件)
- Qt-如何在Qt3DWindow上获取鼠标事件
- QT事件当小部件视线视线时
- DLL中的QT事件循环
- 在QML上下文中处理QT C 事件
- Qt 事件过滤器未检测到对象名称
- QT 事件仅对部分小部件透明
- 未捕获QT事件筛选器中的键盘快捷键(强制文本为大写)
- qtreeview的qt事件筛选器不工作
- Qt事件后,长例程冻结了我的应用程序一段时间
- Qt -事件监听器的树小部件项目单击
- 如何防止QT事件堆栈溢出