单选快捷键ctrl加什么,按住ctrl依次选中怎么操作

首页 > 实用技巧 > 作者:YD1662023-12-05 05:12:21

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(); //获取键盘的获取权

单选快捷键ctrl加什么,按住ctrl依次选中怎么操作(1)

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

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

点击这里:

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.