QT应用编程: 解决QGraphicsScene重写鼠标事件无法直接得到鼠标坐标问题

举报
DS小龙哥 发表于 2021/12/10 00:43:47 2021/12/10
3.3k+ 0 0
【摘要】 一、环境介绍 操作系统介绍:win10 64位 QT版本: 5.12.6 二、现象 重载QGraphicsScene相关的鼠标事件,想得到当前鼠标的坐标点,如果直接从mouseEvent取坐标,返回的坐标点全是0。 class my_graphicsScene : public QGraphicsScene{prot...

一、环境介绍

操作系统介绍:win10 64位

QT版本: 5.12.6

二、现象

重载QGraphicsScene相关的鼠标事件,想得到当前鼠标的坐标点,如果直接从mouseEvent取坐标,返回的坐标点全是0。


      class my_graphicsScene : public QGraphicsScene
      {
      protected:
         void mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent);
         void mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent);
         void mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent);
      }
      ......
      void my_graphicsScene::mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent)
      {
         //鼠标左键按下
         if(mouseEvent->button()==Qt::LeftButton)
          {
             //记录鼠标按下的点
              start_point=mouseEvent->pos(); //相对窗口坐标---->这里得到的坐标全是0
          }
      }
  
 

三、解决办法


      /*
      工程: ECRS
      日期: 2021-01-02
      作者: DS小龙哥
      环境: win10 QT5.12.6 MinGW32
      功能: 鼠标移动事件
      */
      void my_graphicsScene::mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent)
      {
          QGraphicsScene::mousePressEvent(mouseEvent);
         qDebug()<<"坐标:"<<mouseEvent->scenePos();
      }
  
 

最终程序实现的效果是,  视频画面局部放大,使用鼠标框到某个区域完成。 

文章来源: xiaolong.blog.csdn.net,作者:DS小龙哥,版权归原作者所有,如需转载,请联系作者。

原文链接:xiaolong.blog.csdn.net/article/details/112130645

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。