qt 模拟按键消息,在keypressevent中,拦截Delete消息,转为数字0,无效

fengwanzk 2018-12-19 11:35:16
我在KeypressEvent事件中,当keyvalue=backspace时,转换为left消息,可行。
但是,当keyvalue=delete时,转换为数字0消息,总是无效。
写法如下:
QKeyEvent leftKey(QEvent::KeyPress, Qt::Key_Left, Qt::NoModifier);
QCoreApplication::sendEvent(widget, &leftKey);
使用场景是:在一个QLineEdit扩展类中,使用了InputMask。如果点击了delete,对应位置的数字将会被清掉。因此,我期望当点击backspace时,将当前位置的数据设置为0,然后光标向左移动。当点击delete时,在对应位置填写数字0,而不是把数字清掉。
比如:InputMask=HH:HH:HH:HH:HH时,点击了backspace或者delete后,在LineEdit中,就会显示为:::::。我希望是
00:00:00:00:00:00。
请教,可能是什么原因。
...全文
379 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengwanzk 2018-12-21
  • 打赏
  • 举报
回复
多谢,我再检查检查。
kerwin liu 2018-12-21
  • 打赏
  • 举报
回复
这个delete转换为0的问题,要视具体情况分析。有可能转换成功了,只是又被你的delete给删掉了。你可以安装事件过滤器的方式(installEventFilter)把按键中的delete拦住。再替换成自己的事件(也可以自定义事件,继承QEvent)。
当然你要了解事件传递的流程和先后顺序。
不易易 2018-12-21
  • 打赏
  • 举报
回复
我简单测了下,,用installEventFilter,没有继承,基本上可以,当是delete时处理完要return true。
fengwanzk 2018-12-19
  • 打赏
  • 举报
回复
或者说是“当收到一个消息后”,将它转换为另一个消息。

16,229

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧