找回密码
 立即注册
收起左侧

QT中如何模拟键盘操作

3
回复
10560
查看
[复制链接]
累计签到:25 天
连续签到:1 天
来源: 2015-12-28 14:37:33 显示全部楼层 |阅读模式
1Qter豆
如题,想要做到单击界面上按钮达到textedit中按下和弹起 shift,ctrl等键盘按键的效果。
查找后使用如下代码尝试,可以通过编写但是没有效果,求解释
QKey Event event(QEvent::KeyPress, QT::Key_Shift,Qt::NoModifier,QString(),1,1);
QApplication::sendEvent(ui->textEdit, &event);

回复

使用道具 举报

累计签到:1571 天
连续签到:1 天
2015-12-28 16:03:29 显示全部楼层
建议你先模拟一个普通按键,比如数字或者字母。成功了再模拟修饰键。
回复

使用道具 举报

累计签到:25 天
连续签到:1 天
2015-12-28 17:36:48 显示全部楼层
yafeilinux 发表于 2015-12-28 16:03
建议你先模拟一个普通按键,比如数字或者字母。成功了再模拟修饰键。

试了很久,用了一个事件过滤器监控,发现
QKey Event event(QEvent::KeyPress, QT::Key_X,Qt::NoModifier,QString(Y),1,1);
QApplication::sendEvent(ui->textEdit, &event);
实际效果是发射一个键盘X按下事件,但是内容是Y,这个事件能够被当做键盘按下X接收到,但是实际效果是Y,和X到底是什么按键一点关系也没有,至于Modifier选项换了各种没发现区别,后面的autorep和count改成0和1完全没发现区别,如果把QString删掉,可以正常运行,但是不会输出任何值,只会触发过滤器。现在完全搞不懂了,模拟按键不该用这个函数吗,弄了一下午,哎,还是去看C++怎么弄吧
回复

使用道具 举报

累计签到:25 天
连续签到:1 天
2015-12-28 20:12:00 显示全部楼层
搞不懂中间这个没有介绍的qstring怎么才能变成按键值,转变思路尝试用QWSServer解决,发现调用sendkeyevent的话,加载了#in<QWSS>,还是会提示缺少,求解答还要添加什么。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了