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>
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 archivocustomscene.h
.Reemplaza:
Con:
Luego, compila y ejecuta el código nuevamente.</customrectitem.h></customrectitem.h>