Всем привет!
В общем нужно добавить на сцену квадратики, круглишки. И отлавливать клики мыши на данных квадратиках и жмитировать сигнал с
Но получается когда я переопределяю
virtual void mousePressEvent(QGraphicsSceneMouseEvent * mouseEvent);
То теперь перемещение объекта внутри сцены производится только по двойному клику мышки.
Теперь если переопределяю
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
То не могу перемащать объекты вообще.
Вот код.
C++ (Qt)
#include <QGraphicsScene>
#include <QGraphicsEllipseItem>
class MvScene : public QGraphicsScene
{
Q_OBJECT
public:
MvScene(QObject *parent = 0);
protected:
virtual void mousePressEvent(QGraphicsSceneMouseEvent * mouseEvent);
signals:
void myName(QString nm);
private:
//void placeBox(float x, float y);
//QGraphicsItem * itemCollidesWith(QGraphicsItem * item);
};
C++ (Qt)
#include "mvscene.h"
#include <QGraphicsSceneMouseEvent>
#include <QKeyEvent>
#include <QGraphicsItem>
#include <QtCore>
MvScene::MvScene(QObject *parent) : QGraphicsScene(parent)
{
this->setSceneRect(QRectF(-100,-100,640,480));
}
void MvScene::mousePressEvent(QGraphicsSceneMouseEvent * mouseEvent)
{
if (mouseEvent->button() == Qt::LeftButton)
{
QGraphicsItem * item = itemAt(mouseEvent->scenePos());
if (item)
{
emit myName(item->data(0).toString());
}
}
}
Как мне заставить при одном клике левой кнопкой емитировать мой сигнал и при этом сохранить возможность перемещать объект при левой зажатой кнопкой?
Буду очень рад помощи!