es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error de acceso a miembro QGraphicsSceneMouseEvent a tipo incompleto ‘QMouseEvent’

Estoy obteniendo un error que no sé cómo resolver.

He creado una clase CustomScene que hereda QGraphicsScene y quiero sobrescribir las funciones de mouse en esta clase.

Estoy intentando crear un rectángulo en la escena arrastrando y soltando, y cuando intento obtener la posición del ratón usando event->pos().x(), obtengo “QGraphicsSceneMouseEvent” acceso miembro a tipo incompleto “QGraphicsSceneMouseEvent”.

#ifndef CUSTOMSCENE_H
#define CUSTOMSCENE_H

#include <qgraphicsscene>
#include <customrectitem.h>


class CustomScene : public QGraphicsScene
{
    Q_OBJECT
public:
    explicit CustomScene(QObject *parent = nullptr);

    QGraphicsScene* scene = new QGraphicsScene;
 protected:
     void mousePressEvent(QGraphicsSceneMouseEvent *event) override;
     void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override;
     void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override;
};

#endif // CUSTOMSCENE_H

“`cpp
#include "customscene.h"
#include <qdebug>

<dl>
<dt>CustomScene::CustomScene(QObject *parent)</dt>
<dd>QGraphicsScene{parent}
{</dd>
</dl>

}

void CustomScene::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
qDebug() << "La escena sabe que se ha presionado el ratón";

<pre><code>QGraphicsRectItem* rect = new QGraphicsRectItem(event->pos().x(), event->pos().y(), 100, 100);
// la línea del error
this->addItem(rect);
</code></pre>

}

void CustomScene::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
qDebug() << "La escena sabe que el ratón se está moviendo";
}

void CustomScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
qDebug() << "La escena sabe que se ha soltado el ratón";
}
“`</customrectitem.h>

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error “member access to incomplete type QGraphicsSceneMouseEvent” indica que el compilador no reconoce el tipo QGraphicsSceneMouseEvent.

    Para resolver este error, necesitas incluir el encabezado <qgraphicsscenemouseevent> en tu archivo customscene.h.

    Reemplaza:

    #include <qgraphicsscene>
    #include <customrectitem.h>
    

    Con:

    #include <qgraphicsscene>
    #include <qgraphicsscenemouseevent>
    #include <customrectitem.h>
    

    Luego, compila y ejecuta el código nuevamente.</customrectitem.h></customrectitem.h>

Comments are closed.