QTアプリケーションプログラミング:マウスイベントを書き換えるときにQGraphicsSceneがマウス座標を直接取得できないという問題を解決します

1.環境紹介

オペレーティングシステムの紹介: win1064ビット

QTバージョン:  5.12.6

2.現象

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();
}

 

プログラムの最終的な効果は、ビデオ画面が部分的に拡大され、マウスフレームを使用して特定の領域でそれを完了することです。 

 

おすすめ

転載: blog.csdn.net/xiaolong1126626497/article/details/112130645