门户
书籍
教程
论坛
问答
下载
签到
个人空间
帐号
自动登录
找回密码
密码
登录
立即注册
账号
自动登录
找回密码
密码
登录
立即注册
请绘制轨迹完成人机验证
由vaptcha提供技术支持
登录
注册
搜索
搜索
搜索
热搜
qml
quick
串口
输入中文
数据库
arm
百度地图
qt聊天
QT安装
安装
多窗口
中文乱码
聊天
局域网
鼠标
QT
图片
乱码
rs485通讯
多线程
android
多文档编辑器
本版
用户
本版
用户
【HUX】问题互助平台
博客
动态
好友
帖子
收藏
道具
勋章
任务
淘帖
动态
日志
相册
分享
记录
留言板
群组
门户
导读
排行榜
设置
我的收藏
退出
Qt开源社区
›
精华区(请在“有问必答”发帖)
›
有问必答
›
程序调试
›
如何屏蔽子控件的键盘动作?
发布主题
返回列表
如何屏蔽子控件的键盘动作?
2
回复
4990
查看
[复制链接]
tovax
当前离线
积分
105
tovax
累计签到:27 天
连续签到:1 天
来源:
2019-9-26 09:34:39
显示全部楼层
|
阅读模式
1
Qter豆
本帖最后由 tovax 于 2019-9-26 09:37 编辑
主窗口是QMainWindow,包括若干个tableWidget和pushButton,想通过Key_Up和Key_Down实现某些其他功能,比如串口的发送;
于是就重写了KeyPressEvent,但是主窗口的焦点一般都在tableWidget,导致tableWidget先响应了按键的动作,而串口功能不能稳定的实现了;
也尝试过重新event和eventFilter,效果都差不多;
请各位该怎么处理呢?(以下是主窗口Central的键盘按下事件)
void Central::keyPressEvent(QKeyEvent *evt)
{
switch (evt->key()) {
case Qt::Key_Up:
if (evt->isAutoRepeat()) {
// evt->ignore();
} else {
qDebug() << "Key_Up Pressed.";
}
break;
case Qt::Key_Down:
if (evt->isAutoRepeat()) {
// evt->ignore();
} else {
qDebug() << "Key_Down Pressed.";
}
break;
default:
// QMainWindow::keyReleaseEvent(evt); // Central::keyPressEvent(evt); // QWidget::keyPressEvent(evt);
break;
}
// QMainWindow::keyReleaseEvent(evt);
}
我来回答
回复
使用道具
举报
carman
当前离线
积分
29
carman
累计签到:12 天
连续签到:1 天
2019-9-30 16:48:25
显示全部楼层
一般来说 事件先传递给子控件 ,在子控件没有处理的情况下 会传给父类进行处理 所以 你的问题应该是在子类处理了KeyPressEvent中的事件
Key_Up和Key_Down 导致事件没有传递
回复
使用道具
举报
tovax
当前离线
积分
105
tovax
累计签到:27 天
连续签到:1 天
2019-10-25 20:42:48
显示全部楼层
carman 发表于 2019-9-30 16:48
一般来说 事件先传递给子控件 ,在子控件没有处理的情况下 会传给父类进行处理 所以 你的问题应该是在子 ...
谢谢你的回复!对事件传递的顺序还理解的不够,按你说的应该是可以的。
回复
使用道具
举报
返回列表
发表新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满)
我知道了