QT键盘消息
2022/9/8 23:54:45
本文主要是介绍QT键盘消息,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
相对鼠标消息, 键盘消息显得要容易些.
主要是继承并实现这两个函数
virtual void keyReleaseEvent(QKeyEvent * event); virtual void keyPressEvent(QKeyEvent * event);
我在这两个函数里加了些代码,让用户的按键状态在状态栏中显示出来
void MainWindow::keyPressEvent(QKeyEvent * event) { QString strMessage = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss:zzz"); strMessage += " keyPressEvent "; if (event->modifiers() & Qt::ControlModifier) { strMessage += " ctrl"; } if (event->modifiers() & Qt::ShiftModifier) { strMessage += " shift"; } if (event->modifiers() & Qt::AltModifier) { strMessage += " alt"; } qDebug() << hex << event->key() << endl; if ( (0 == event->key()) || ( Qt::Key_unknown == event->key()) || event->key() > Qt::Key_Escape) { strMessage += " no_key"; }else { strMessage += " key="; strMessage += QChar(event->key()); } ui->statusBar->showMessage(strMessage); } void MainWindow::keyReleaseEvent(QKeyEvent * event) { QString strMessage = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss:zzz"); strMessage += " keyReleaseEvent "; if (event->modifiers() & Qt::ControlModifier) { strMessage += " ctrl"; } if (event->modifiers() & Qt::ShiftModifier) { strMessage += " shift"; } if (event->modifiers() & Qt::AltModifier) { strMessage += " alt"; } qDebug() << hex << event->key() << endl; if ( (0 == event->key()) || ( Qt::Key_unknown == event->key()) || event->key() > Qt::Key_Escape ) { strMessage += " no_key"; }else { strMessage += " key="; strMessage += QChar(event->key()); } ui->statusBar->showMessage(strMessage); }
值得注意的是,假如我只按一个CTRL键,event->key()的值是1000021
按我的理解,event->key()应该是是0或者Qt::Key_unknown,表示没有键按下参考QT文档
int QKeyEvent::key() const
最终,我觉得,如果event->key()的值大于0x1000000,就认为没有实际的键按下:
if ( (0 == event->key()) || ( Qt::Key_unknown == event->key()) || event->key() > Qt::Key_Escape) { strMessage += " no_key"; }else { strMessage += " key="; strMessage += QChar(event->key()); }
Key_Escape的值定义如下:
Key_Escape = 0x01000000, // misc keys
代码见: http://q1024.com/files/qt_window-master.zip 000700目录
这篇关于QT键盘消息的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-04-26敏捷开发:想要快速交付就必须舍弃产品质量?
- 2024-04-26静态代码分析的这些好处,我竟然都不知道?
- 2024-04-26你在测试金字塔的哪一层?(下)
- 2024-04-26快刀斩乱麻,DevOps让代码评审也自动起来
- 2024-04-262024年最好用的10款ER图神器!
- 2024-04-2203-为啥大模型LLM还没能完全替代你?
- 2024-04-2101-大语言模型发展
- 2024-04-17基于SpringWeb MultipartFile文件上传、下载功能
- 2024-04-14个人开发者,Spring Boot 项目如何部署
- 2024-04-14RAG应用开发实战02-相似性检索的关键 - Embedding