He estado tirando de mi cabello con este durante horas. Hay un hilo here al respecto, pero nada parece estar funcionando. QGraphicsView :: rect() devolverá el ancho y el alto, pero los valores left
y top
no están configurados correctamente (siempre 0 - ignorando la cantidad desplazada). Lo quiero en coordenadas de escena, pero debería ser lo suficientemente fácil de traducir desde cualquier sistema. No tengo idea de qué horizontalScrollBar()->value()
y vert están volviendo ... parece ser un jibberish sin sentido.¿Obtiene el rectángulo visible de 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 that ... los valores de la barra de desplazamiento son relativos a ... bueno, no puede ser el sceneRect() porque esos son flotantes ... pero algo similar. – mpen
Tal vez es la forma de construir QGraphicsView, cualquier fragmento de código fuente? – fabrizioM
No estoy seguro de qué código quiere exactamente. Realmente no importa cómo lo construyo ... obtener el rect visible debería ser exactamente el mismo. – mpen