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-11-22[开源]10.3K+ Star!轻量强大的开源运维平台,超赞!
- 2024-11-21Flutter基础教程:新手入门指南
- 2024-11-21Flutter跨平台教程:新手入门详解
- 2024-11-21Flutter跨平台教程:新手入门与实践指南
- 2024-11-21Flutter列表组件教程:初学者指南
- 2024-11-21Flutter列表组件教程:新手入门指南
- 2024-11-21Flutter入门教程:初学者必看指南
- 2024-11-21Flutter入门教程:从零开始的Flutter开发指南
- 2024-11-21Flutter升级教程:新手必读的升级指南
- 2024-11-21Flutter升级教程:轻松掌握Flutter版本更新