Programación de aplicaciones QT: resuelva el problema de que QGraphicsScene no puede obtener las coordenadas del mouse directamente al reescribir eventos del mouse

1. Introducción medioambiental

Introducción al sistema operativo: win10 64 bit

Versión QT:  5.12.6

2. Fenómeno

Sobrecargue los eventos del mouse relacionados con QGraphicsScene. Si desea obtener las coordenadas del mouse actual, si obtiene las coordenadas directamente de mouseEvent, las coordenadas devueltas son todas 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
    }
}

Tres, la solución

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

 

El efecto final del programa es que la pantalla de video se amplía parcialmente y el marco del mouse se usa para completarla en un área determinada. 

 

Supongo que te gusta

Origin blog.csdn.net/xiaolong1126626497/article/details/112130645
Recomendado
Clasificación