QT 触控事件和鼠标事件的分离(问题已解决)

这篇具有很好参考价值的文章主要介绍了QT 触控事件和鼠标事件的分离(问题已解决)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题:QT图形视图框架,QGraphicsScene中默认接收触控事件,会将第一个点当作鼠标事件处理。
在开发者开发的时候,可能会有这样的需求,希望自己的触控事件和鼠标事件能够分割开来。
找到的解决方法:
方案一:

setAttribute(Qt::AA_SynthesizeMouseForUnhandledTouchEvents);
setAttribute(Qt::AA_SynthesizeTouchForUnhandledMouseEvents);

问题没有解决,修改这两个参数,也无法让QT的触控单击事件有响应。
方案二:
重写mouse事件,调用source事件将触控事件的强制转换给过滤掉,不接收鼠标事件,触控单击仍然没有反应。
方案三:
将事件分发写在QGraphicsView中。
QGraphicsView中有两个函数,一个为viewportevent()一个为event(),二者都能用来接收触控事件,但是内部实现机制有所区别,viewportevent()默认将触控单击第一个点转为鼠标事件,而event()分发则不会将触控单击的第一个点转为鼠标事件,也就是即使不重写鼠标事件,也不影响多点触控的单击,同样,在QWidget重写event()函数中也是如此,并不会默认转换,所以如果要实现触控和鼠标事件的分离,事件分发最好用QWidget和QGraphicsView中重写event()函数,经过测试,问题已经解决。文章来源地址https://www.toymoban.com/news/detail-566104.html

bool wbView::event(QEvent *event)
{
    if(event->type()==QTouchEvent::TouchEnd||event->type()==QTouchEvent::TouchBegin||event->type()==QTouchEvent::TouchUpdate)
    {
        if(touchEvent(static_cast<QTouchEvent*>(event)))
                    return true;
    }
    return QGraphicsView::event(event);
}

到了这里,关于QT 触控事件和鼠标事件的分离(问题已解决)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Qt自定义控件 —— 子控件与父控件的鼠标事件问题

    目录 0、引言: 1、问题描述: 2、解决方案: 3、解决后效果: 在 Qt自定义控件 —— 颜色选择组合控件 https://blog.csdn.net/YMGogre/article/details/128955257 一文中我们创建了自定义的组合控件,在该控件中包含了三个子控件 —— QGraphicsView 、 QLineEdit 和 QPushButton 。当我们通过 setIt

    2024年02月09日
    浏览(93)
  • 【QT开发笔记-基础篇】| 第四章 事件QEvent | 4.4 鼠标按下、移动、释放事件

    本章要实现的整体效果如下: QEvent::MouseButtonPress ​ 鼠标按下时,触发该事件,它对应的子类是 QMouseEvent QEvent::MouseMove ​ 鼠标移动时,触发该事件,它对应的子类是 QMouseEvent QEvent::MouseButtonRelease ​ 鼠标释放时,触发该事件,它对应的子类是 QMouseEvent 本节通过两个案例来讲

    2024年02月08日
    浏览(49)
  • Qt实现桌面画线、标记,流畅绘制,支持鼠标和多点触控绘制

    经常会在网上直播讲课或者点评中看到可以在课件上或者桌面上进行画线标记划重点,其实实现并不难,原理就是在桌面上盖一个透明图层,然后根据鼠标点绘制曲线。 今天分享如何通过Qt的QGraphics体系来实现这个功能,以前的文章已经介绍过使用Qt进行曲线绘制及相关原理

    2024年02月15日
    浏览(48)
  • 鸿蒙开发笔记(二十六):交互事件--触摸,按键,鼠标,焦点

    交互事件按照触发类型来分类,包括触屏事件、键鼠事件和焦点事件。 触屏事件:手指或手写笔在触屏上的单指或单笔操作。 键鼠事件:包括外设鼠标或触控板的操作事件和外设键盘的按键事件。 鼠标事件是指通过连接和使用外设鼠标/触控板操作时所响应的事件。 按键事

    2024年01月24日
    浏览(47)
  • 树莓派安装虚拟键盘,解决虚拟键盘乱码问题,解决MIPI DSI触摸屏触控漂移问题

    当我们买了触摸屏后,会发现没有键盘,还是无法输入,因此需要虚拟键盘 如果你的语言和地区是中文,那么安装虚拟键盘后可能显示乱码,所以还需要安装中文字体 安装完后,重启一下。重启后会发现系统的字体都变得清晰了,并且在菜单-附件中,会找到Keyboard 点击虚拟

    2024年02月09日
    浏览(54)
  • Qt - Qt5事件处理(鼠标事件)

    鼠标事件 ​ 鼠标事件包括鼠标的移动,鼠标键按下,松开,单击,双击等 使用鼠标事件时,加入对应头文件 常见的鼠标事件如下: QMouseEvent类包含了用于描述鼠标事件的参数。 当在一个窗口里按住鼠标按键、或移动、或释放就会产生鼠标事件QMouseEvent。 鼠标移动事件只会

    2023年04月09日
    浏览(43)
  • 06-5_Qt 5.9 C++开发指南_Splash 与登录窗口(MouseEvent鼠标事件;注册表;加密)

    一般的大型应用程序在启动时会显示一个启动画面,即 Splash 窗口。Splash 窗口是一个无边对话框,一般显示一个图片,展示软件的信息。Splash 窗口显示时,程序在后台做一些比较耗时的启动准备工作,Splash 窗口显示一段时间后自动关闭,然后软件的主窗口显示出来。Qt有一个

    2024年02月13日
    浏览(48)
  • Qt透明窗口鼠标穿透问题及解决办法

    最近写了个项目,需要播放视频并在视频上做标记框去完成一些功能 因为视频播放使用了 VLC-qt 的库,封装好的窗口控件 没办法直接在该视频窗口上绘图(也许可以?) 出于不想动别人写好的库的想法,想着在视频窗口上加一个透明蒙版-即一个透明窗口,在透明窗口上进行

    2024年02月04日
    浏览(44)
  • Qt 事件 < 二 >鼠标键盘事件

    Qt 是一个流行的 C++ 框架,用于构建跨平台的图形用户界面应用程序。在 Qt 中,处理键盘事件和鼠标事件是常见的任务,因为用户输入在交互式应用程序中至关重要。下面是关于 Qt 键盘事件和鼠标事件的学习总结: 键盘事件 (QKeyEvent)使用入门: 事件处理函数: 键盘事件通过

    2024年01月18日
    浏览(42)
  • QT学习日记12——Qt中的鼠标事件

    学习视频链接 最新QT从入门到实战完整版|传智教育_哔哩哔哩_bilibili https://www.bilibili.com/video/BV1g4411H78N?p=31vd_source=0471cde1c644648fafd07b54e303c905 目录 一、鼠标进入和出去事件 1.1 新建 C++ 文件 1.2 编写代码 1.3 操作 1.4 运行结果 二、鼠标点击、释放和移动事件 2.1 修改代码 2.2 运行结

    2024年02月11日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包