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

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

一、环境介绍

操作系统介绍:win10 64位

QT版本: 5.12.6

二、现象

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


  
  1. class my_graphicsScene : public QGraphicsScene
  2. {
  3. protected:
  4. void mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent);
  5. void mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent);
  6. void mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent);
  7. }
  8. ......
  9. void my_graphicsScene::mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent)
  10. {
  11. //鼠标左键按下
  12. if(mouseEvent->button()==Qt::LeftButton)
  13. {
  14. //记录鼠标按下的点
  15. start_point=mouseEvent->pos(); //相对窗口坐标---->这里得到的坐标全是0
  16. }
  17. }

三、解决办法


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

 

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

 

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

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

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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