Seite 1 von 1

scenePos() aus QGraphicsSceneMouseEvent verwenden

Verfasst: 15. November 2007 21:25
von boer
Hallo zusammen,

Ich habe ein QGraphicsScene, die ein QGraphicsItem namens pointer (einfach ein ausgefüllter Kreis) enthält. Wenn sich der Mauszeiger über der Szene bewegt, soll der Pointer diesem folgen.

Die Pointerklasse sieht folgendermaßen aus:

Code: Alles auswählen

// -- pointer.h ------------------------------------
//...

class Pointer : public QObject, QGraphicsItem
{
  Q_OBJECT

public:
  Pointer();

//...

};

Die Szene hab ich folgendermaßen implementiert:

Code: Alles auswählen

// -- graphwidget.h ------------------------------------
//...

class Pointer

class GraphWidget : public QGraphicsView
{
  Q_OBJECT

public:
  GraphWidget(QWidget *startMenue);

protected:
  void mouseMoveEvent(QGraphicsSceneMouseEvent *event);

//...

private:
  Pointer *pointer;
}

Code: Alles auswählen

// -- graphwidget.cpp ------------------------------------

GraphWidget::GraphWidget(QWidget *startMenue)
{
  //...

  this->setMouseTracking(true);

  QQraphicsScene *scene = new QGraphicsScene(this)
  //...
  setScene(scene);

  //...

  pointer = new Pointer;

  scene->addItem(pointer);

  //...
}


//...

void GraphWidget::mouseMoveEvent(QGraphicsSceneMouseMoveEvent *event)
{
  event->accept();
  pointer->setPos(event->scenePos());
}
Der Pointer wird ohne weiteres dargestellt, es gibt keine Fehlermeldungen weder beim Kompilieren noch zur Laufzeit, jedoch ändert sich die Position des Pointers nicht wenn sich der Mauszeiger bewegt. Kann mir jemand weiterhelfen?

Danke schon mal!

Verfasst: 15. November 2007 21:51
von upsala
Meinst du QGraphicsView oder QGraphicsScene? QGraphicsView hat kein QGraphicsSceneMouseEvent...

Außerdem würde ich per qDebug mal die Position ausgeben, damit man auch sieht ob sich wirklich was tut...