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

2022-01-07 14:18:09 浏览数 (1)

一、环境介绍

操作系统介绍:win10 64位

QT版本: 5.12.6

二、现象

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

代码语言:javascript复制
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
    }
}

三、解决办法

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

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

0 人点赞