Ich habe mir stundenlang die Haare ausgezogen. Es gibt einen Thread here darüber, aber nichts scheint zu funktionieren. QGraphicsView :: rect() gibt die Breite und Höhe zurück, aber die left
und Werte sind nicht richtig eingestellt (immer 0 - ignoriert den gescrollten Betrag). Ich möchte es in Szene-Koordinaten, aber es sollte leicht genug sein, um von jedem System zu übersetzen. Ich habe keine Ahnung, was horizontalScrollBar()->value()
und Vert zurückkehren ... scheint sinnlos Jibberish zu sein.Erhalten Sie ein sichtbares Rechteck von QGraphicsView?
// created here
void EditorWindow::createScene() {
m_scene = new EditorScene(this);
m_view = new EditorView(m_scene);
setCentralWidget(m_view);
connect(m_scene, SIGNAL(mousePosChanged(QPointF)), this, SLOT(mousePosChanged(QPointF)));
}
/// with this constructor
EditorView::EditorView(QGraphicsScene* scene, QWidget* parent) : QGraphicsView(scene, parent) {
setRenderHint(QPainter::Antialiasing);
setCacheMode(QGraphicsView::CacheBackground);
setViewportUpdateMode(QGraphicsView::FullViewportUpdate);
setDragMode(QGraphicsView::NoDrag);
scale(1.0, -1.0); // flip coordinate system so that y increases upwards
fitInView(-5, -5, 10, 10, Qt::KeepAspectRatio);
setInteractive(true);
setBackgroundBrush(QBrush(QColor(232,232,232), Qt::DiagCrossPattern));
}
Scratch, dass ... die Scrollbar-Werte sind relativ zu ... Nun, es kann nicht die SzeneRect() sein, denn das sind Schwimmer ... aber etwas ähnliches. – mpen
Vielleicht ist, wie Sie die QGraphicsView, irgendein Quellcode-Snippet konstruieren? – fabrizioM
Ich bin mir nicht sicher, welchen Code Sie genau wollen. Es ist nicht wirklich wichtig, wie ich es konstruiere ... das sichtbare Rect zu bekommen sollte genau das gleiche sein. – mpen