scenePos() aus QGraphicsSceneMouseEvent verwenden

Alles rund um die Programmierung mit Qt
Antworten
boer
Beiträge: 9
Registriert: 11. November 2007 14:20

scenePos() aus QGraphicsSceneMouseEvent verwenden

Beitrag 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!
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag 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...
Antworten