一、环境介绍
操作系统介绍: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(); }
最终程序实现的效果是, 视频画面局部放大,使用鼠标框到某个区域完成。