如何在Qt5中将键盘事件伪造为小部件

伦纳特·罗兰德

我为信息亭应用程序制作了一个自定义的虚拟键盘小部件,现在是时候让我产生虚假的键盘事件并将其提供给所选的QLineEdit了。

我执行以下操作:

// target is the QWidget to receive the events
// k is the Qt::Key (keycode) I want to send (Testing with an 'A')
Qt::Key k=Qt::Key_A;
if(0!=target){
    //According to docs this will be freed once posted
    QKeyEvent * press=new QKeyEvent(QKeyEvent::KeyPress, (int )k,0);
    QKeyEvent * release=new QKeyEvent(QKeyEvent::KeyRelease, (int )k,0);
    //Give the target focus just to be sure it is available for input
    target->setFocus();
    //Post the events (queue up and let the target consume them when the eventloop gets around to the target)
    QCoreApplication::postEvent ( target, press) ;
    QCoreApplication::postEvent ( target, release) ;
}

我看到目标窗口小部件获得了焦点,但是没有像我期望的那样在输入字段中键入字母。我究竟做错了什么?哪些假设是错误的?

PS:我知道可以通过使用现有的虚拟键盘或至少使用平台界面来解决此问题,如本文所述在我们的方法中,我们决定将滑水板内置到应用程序中,以获得对UX和键盘设计的完全控制。

谢谢!

伦纳特·罗兰德

由于没有人加紧,我将尝试提供一些解决方案。

事实证明,Qt5附带了一个名为testlib的测试工具库它具有各种各样的优点,可简化Qt应用程序的单元测试的创建,管理和运行。在这些工具中,有一组用于发送伪造事件的功能,例如伪造文本,单击鼠标等。它非常全面,涵盖了许多用例。由于Qt开发人员在内部用于测试Qt本身,因此它也是经过生产验证的代码。

我只是从那里复制了我需要的东西。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Qt5中将键盘事件伪造为小部件

来自分类Dev

如何在Qt5中的小部件上画一条线

来自分类Dev

如何在gtk3中将特定的CSS类设置为小部件?(C)

来自分类Dev

Qt5如何使类成员小部件无法删除

来自分类Dev

如何在Qt中禁用向小部件而不是其子级的鼠标事件传递?

来自分类Dev

如何在Magento 2中将小部件添加到布局中?

来自分类Dev

如何在iOS 8中将小部件与NSNotificationCenter结合使用

来自分类Dev

在 Qt5 日历小部件中突出显示日期间隔

来自分类Dev

来自 UI 的 Qt5 小部件属性

来自分类Dev

如何在Flutter中将小部件随机放置在布局中

来自分类Dev

如何在“时钟”小部件中显示Google日历事件?

来自分类Dev

如何在事件中获取小部件名称

来自分类Dev

如何在时钟小部件中显示 Google 日历事件?

来自分类Dev

如何在Qt Creator中锚定小部件?

来自分类Dev

如何在QML中嵌入Qt小部件?

来自分类Dev

如何在QML中访问Qt日历小部件

来自分类Dev

如何在Qt小部件中捕获Tab键

来自分类Dev

如何在Qt小部件中设置文本格式

来自分类Dev

如何在Qt 3中使用小部件插件?

来自分类Dev

如何在Ubuntu 16.04中为Qt5安装Declarative模块?

来自分类常见问题

如何在Flutter中为小部件添加边框?

来自分类Dev

如何在LambdaTerm中为小部件着色?

来自分类Dev

如何使用 Pyqt 小部件创建键盘和鼠标事件

来自分类Dev

如何在Qt中将拖放小部件实现到另一个容器?

来自分类Dev

如何在Windows 10中将键盘重置为其原始默认设置?

来自分类Dev

如何在Qt5中检查url是否可用?

来自分类Dev

如何在Qt5中检查url是否可用?

来自分类Dev

如何在Fedora 30中安装Qt5

来自分类Dev

如何在flutter中将小部件屏幕截图存储为jpg文件?

Related 相关文章

  1. 1

    如何在Qt5中将键盘事件伪造为小部件

  2. 2

    如何在Qt5中的小部件上画一条线

  3. 3

    如何在gtk3中将特定的CSS类设置为小部件?(C)

  4. 4

    Qt5如何使类成员小部件无法删除

  5. 5

    如何在Qt中禁用向小部件而不是其子级的鼠标事件传递?

  6. 6

    如何在Magento 2中将小部件添加到布局中?

  7. 7

    如何在iOS 8中将小部件与NSNotificationCenter结合使用

  8. 8

    在 Qt5 日历小部件中突出显示日期间隔

  9. 9

    来自 UI 的 Qt5 小部件属性

  10. 10

    如何在Flutter中将小部件随机放置在布局中

  11. 11

    如何在“时钟”小部件中显示Google日历事件?

  12. 12

    如何在事件中获取小部件名称

  13. 13

    如何在时钟小部件中显示 Google 日历事件?

  14. 14

    如何在Qt Creator中锚定小部件?

  15. 15

    如何在QML中嵌入Qt小部件?

  16. 16

    如何在QML中访问Qt日历小部件

  17. 17

    如何在Qt小部件中捕获Tab键

  18. 18

    如何在Qt小部件中设置文本格式

  19. 19

    如何在Qt 3中使用小部件插件?

  20. 20

    如何在Ubuntu 16.04中为Qt5安装Declarative模块?

  21. 21

    如何在Flutter中为小部件添加边框?

  22. 22

    如何在LambdaTerm中为小部件着色?

  23. 23

    如何使用 Pyqt 小部件创建键盘和鼠标事件

  24. 24

    如何在Qt中将拖放小部件实现到另一个容器?

  25. 25

    如何在Windows 10中将键盘重置为其原始默认设置?

  26. 26

    如何在Qt5中检查url是否可用?

  27. 27

    如何在Qt5中检查url是否可用?

  28. 28

    如何在Fedora 30中安装Qt5

  29. 29

    如何在flutter中将小部件屏幕截图存储为jpg文件?

热门标签

归档