龙空技术网

QT捕获键盘按键按下和松开,这里用ctrl和alt键做出单选和多选

QT教程 169

前言:

此时朋友们对“c语言函数的使用单选”大致比较关怀,各位老铁们都需要知道一些“c语言函数的使用单选”的相关文章。那么小编在网络上搜集了一些对于“c语言函数的使用单选””的相关资讯,希望大家能喜欢,同学们快快来学习一下吧!

h文件中声明下面两个函数

void keyPressEvent(QKeyEvent *event);void keyReleaseEvent(QKeyEvent *event);

.cpp文件中实现两个函数

void record::keyPressEvent(QKeyEvent *event){switch(event->key()){case Qt::Key_Alt:alt_key = KEY_STATE_Press;CLogC_debug("%s:This is debug: alt_key Press\n", __FUNCTION__);break;case Qt::Key_Control:ctrl_key = KEY_STATE_Press;CLogC_debug("%s:This is debug: ctrl_key Press\n", __FUNCTION__);break;}}void record::keyReleaseEvent(QKeyEvent *event){switch(event->key()){case Qt::Key_Alt:alt_key = KEY_STATE_Release;CLogC_debug("%s:This is debug: alt_key Release\n", __FUNCTION__);break;case Qt::Key_Control:ctrl_key = KEY_STATE_Release;CLogC_debug("%s:This is debug: ctrl_key Release\n", __FUNCTION__);break;}}

后来发现press不能用,出现不了,主要原因是mainwindow目前拥有获取键盘的焦点,导致其他子widget界面不能获取键盘事件焦点

解决办法:在构造函数加入:

this->grabKeyboard();

这个小组件接收所有的键盘事件,直到调用releaseKeyboard();其他小组件完全没有得到键盘事件。鼠标事件不受影响。如果你想抓取,请使用 grabMouse() 。

setFocus()像往常一样移动焦点,但新的焦点部件只有在调用releaseKeyboard()后才能接收键盘事件。

如果一个不同的小组件目前正在抓取键盘输入,该小组件的抓取会首先被释放。

参见releaseKeyboard(), grabMouse(), releaseMouse(), and focusWidget()。

这个 grabKeyboard会影响其他界面的键盘输入

这是就调用 类对象->releaseKeyboard(); //释放键盘获取

类对象->grabKeyboard(); //获取键盘的获取权

这就是界面切换:切换到会诊中心界面,让record界面释放键盘获取权,切换到record界面,取得键盘获取权

【领QT开发教程学习资料,点击下方链接莬费领取↓↓,先码住不迷路~】

点击这里:「链接」

标签: #c语言函数的使用单选