QGraphicsView beliebig verschieben ohne ScrollHandDrag
Verfasst: 13. Februar 2009 01:04
Hallo liebe Gemeinde,
ich frag eigentlich nur ungern da ich jederzeit gewillt bin selber Lösungen für Probleme zu finden aber diesmal find ich selbst nach Stundenlangen suche keine Lösung die mich weiter bringt.
Ich möchte gern eine QGraphicsView mit gedrücktem Mausrad verschieben. Problem ist jedoch, es regt sich nix. Die View bleibt wie und wo sie ist. Zoomen funktioniert prima aber verschieben nicht?
Ich möchte nur ungern QGraphicsView::ScrollHandDrag benutzen da ich den DragMode schon auf QGraphicsView::RubberBandDrag gesetzt habe da es mir etwas mehr nützt, aber vorher hab ich ja auch noch gedacht dass das verschieben kein Problem darstellen dürfte
So schaut es momentan aus:
Habe wie gesagt die Große Suchmaschine schon strapaziert aber alles was ich finden konnte hat mir leider nicht geholfen. Hoffe das einer von Euch mir helfen kann 
Gut Schuß
VuuRWerK
ich frag eigentlich nur ungern da ich jederzeit gewillt bin selber Lösungen für Probleme zu finden aber diesmal find ich selbst nach Stundenlangen suche keine Lösung die mich weiter bringt.
Ich möchte gern eine QGraphicsView mit gedrücktem Mausrad verschieben. Problem ist jedoch, es regt sich nix. Die View bleibt wie und wo sie ist. Zoomen funktioniert prima aber verschieben nicht?
Ich möchte nur ungern QGraphicsView::ScrollHandDrag benutzen da ich den DragMode schon auf QGraphicsView::RubberBandDrag gesetzt habe da es mir etwas mehr nützt, aber vorher hab ich ja auch noch gedacht dass das verschieben kein Problem darstellen dürfte
So schaut es momentan aus:
Code: Alles auswählen
void SymbolEditorView::mouseMoveEvent(QMouseEvent *mouseEvent) {
if ((mouseEvent->buttons() & Qt::MidButton) != 0) {
QPoint moveTo(mouseEvent->pos() - m_startPos);
if (moveTo.manhattanLength() < QApplication::startDragDistance())
return;
qDebug() << "moveTo = " << moveTo << "; moveTo.x() = " << moveTo.x() << ", moveTo.y()" << moveTo.y();
QMatrix matrix;
matrix.translate(moveTo.x(), moveTo.y());
setMatrix(matrix);
// translate(moveTo.x(), moveTo.y());
} else {
QGraphicsView::mouseMoveEvent(mouseEvent);
}
}
void SymbolEditorView::mousePressEvent(QMouseEvent *mouseEvent) {
QGraphicsView::mousePressEvent(mouseEvent);
if (mouseEvent->button() == Qt::MidButton) {
m_startPos = mouseEvent->pos();
setCursor(Qt::ClosedHandCursor);
}
}
void SymbolEditorView::mouseReleaseEvent(QMouseEvent *mouseEvent) {
QGraphicsView::mouseReleaseEvent(mouseEvent);
if (mouseEvent->button() == Qt::MidButton)
setCursor(Qt::ArrowCursor);
}
Gut Schuß
VuuRWerK