2010-08-18 15 views
5

Próbuję pokazać zdjęcie w pełnym widoku przy użyciu QGraphicsScene. Ale jeśli kiedykolwiek wstawię QgraphicsScene do QGraphicsView, otrzymuję pasek przewijania. Próbowałem na tak wiele sposobów, ale wszystko poszło do żył. Czy ktoś może mi powiedzieć, jak uzyskać pełny widok bez paska przewijania.Qt - QGraphicsView bez ScrollBar

Odpowiedz

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

Aby ustawić przewijanie programowo raz zostały one ukryte, użyj jednego z przeciążeń v.ensureVisible().

8

Być może korzystasz z pasków przewijania, ponieważ scena jest większa niż obszar do wykorzystania w widoku graficznym. Domyślnie QGraphicsView ma 1-pikselowy margines. Aby rozwiązać ten problem, można spróbować:

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

byłem coraz przewijania bo ręczne ustawienie rect sceny do wielkości elementu graficznego byłem dodania - która była tak duża jak widget QGraphicsView. Nie brałem pod uwagę marży.

+0

Czy istnieje sposób na wyłączenie marginesu 1-pikselowego? Twój kod rozwiązuje problem, ale nadal wygląda na oczywistą naprawę złych ustawień domyślnych. – Trilarion

+1

Nie; margines ten jest zakodowany na sztywno w ramach 'fitInView' (patrz QTBUG-11945). Jedynym sposobem na pozbycie się tego jest napisanie własnego 'fitInView'. Przeprowadzono dyskusję na temat ujawnienia marginesu za pośrednictwem interfejsu API, ale nie został on jeszcze wprowadzony do żadnej wersji Qt. – AndrewS

Powiązane problemy