2010-08-18 25 views
5

Estoy tratando de mostrar una imagen en su totalidad usando QGraphicsScene. Pero cuando coloco el QgraphicsScene dentro de QGraphicsView, obtengo una barra de desplazamiento. Lo intenté de muchas maneras, pero todas fueron a las venas. Entonces, ¿alguien puede decirme cómo obtener la vista completa sin la barra de desplazamiento?Qt - QGraphicsView sin ScrollBar

Respuesta

5
QGraphicsView v; 
v.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); 
v.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); 

Para ajustar el desplazamiento mediante programación una vez que éstos se han ocultado, utilice una de las sobrecargas de v.ensureVisible().

8

Es posible que esté recibiendo barras de desplazamiento porque la escena es más grande que el área utilizable dentro de la vista de gráficos. Por defecto, un QGraphicsView viene con un margen de 1 píxel. Para solucionar este problema, puede intentar:

QRect rcontent = graphicsView.contentsRect(); 
graphicsView.setSceneRect(0, 0, rcontent.width(), rcontent.height()); 

que había estado recibiendo barras de desplazamiento, porque yo estaba sentado manualmente la escena rect al tamaño del elemento gráfico estaba añadiendo - que era tan grande como el widget QGraphicsView. No estaba teniendo en cuenta el margen.

+0

¿Hay alguna forma de desactivar el margen de 1 píxel? Tu código me soluciona el problema, pero aún parece una solución obvia de un mal valor predeterminado. – Trilarion

+1

No; este margen está codificado dentro de 'fitInView' (ver QTBUG-11945). La única forma de deshacerse de él es escribir su propio 'fitInView'. Se ha discutido un poco para exponer el margen a través de una API, pero aún no se ha incluido en ninguna versión de Qt. – AndrewS

Cuestiones relacionadas