ich möchte in meiner Scene ein QGraphicItem per drag and drop bewegen, benötige aber zusätzliche Funktionallität in den MouseEvent-Funktionen, die ich deswegen überschreiben mußte (wenn ich die Funktionen nicht überschreibe funktioniert es ohne Probleme...).
Ich habe es folgendermaßen probiert. Ausschnitt MyScene.cpp:
// Wenn nen Item an der Position des klicks, dann dies als GrabberItem setzen
void MyScene::mousePressEvent(QGraphicsSceneMouseEvent* mouseEvent)
{
mGrabberItem = itemAt( mouseEvent->buttonDownScenePos(Qt::LeftButton) );
}
// GrabberItem für Qt-Funktionalität zurückgeben
QGraphicsItem* MapScene::mouseGrabberItem()
{
return mGrabberItem;
}
wie meinst Du das? MyScene ist von QGraphicsScene abgeleitet, also brauche ich doch da nix mehr übergeben.
Wenn ich was anderes in der MousePressEvent-Funktion mache funktioniert es doch (z.B. das markieren von Items etc.), wohin sollte ich da jetzt noch etwas übergeben? Wenn ich das richtig verstehe wird doch dann, wo auch immer das geschieht, das GrabberItem abgefragt und das habe ich doch gesetzt.
Wenn du in deiner abgeleiteten Klasse eine Methode überschreibst, ist die Funktionalität der Basisklasse erst mal futsch! Um das alte Verhalten deiner neuen Version nicht zu unterbinden, kannst du wie gezeigt die "Original-Version" der Basisklasse aufrufen.