Ich habe mir die Haare stundenlang ausgezogen. Es gibt einen Thread hier darüber, aber nichts scheint zu funktionieren. QGraphicsView :: rect () gibt die Breite und Höhe zurück, aber die left
und top
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ückgeben ... scheint bedeutungsloser Jibberish zu sein.
@ fabrizioM :
%Vor%Ordnen Sie das pixelbasierte Ansichtsfenster-Rechteck mit der Ansicht einfach der Szene zu:
%Vor%Tschüss, Marcel
hier ist eine mögliche Lösung (keine Ahnung, ob dies beabsichtigt ist)
%Vor%HTH, Bernhard
Ordnen Sie das pixelbasierte Ansichtsfenster-Rechteck mit der Ansicht einfach der Szene zu:
%Vor%Tschüss, Marcel
Vergiss es. Kam damit auf, was zu funktionieren scheint.
%Vor%Sie können das tun, was Sie getan haben, oder die Funktionen von mapToScene () verwenden. Sie können sich jedoch nicht darauf verlassen, dass das Rechteck der Szene "rectangle" ist, da die Szene in der Ansicht gedreht oder geschert wird, was zu einem allgemeinen Polygon führt, wenn es der Szene zugeordnet wird.
Wenn Ihre Anwendung solche Dinge natürlich nicht tut, können Sie natürlich davon ausgehen, dass ein Rechteck immer angemessen ist.
Die folgende Implementierung lieferte die besten Ergebnisse für mich:
%Vor%Dies funktioniert immer noch sehr gut, wenn Bildlaufleisten erscheinen. Dies funktioniert nur dann ordnungsgemäß, wenn die Szene nicht gedreht oder geschert dargestellt wird. Wenn die Ansicht gedreht oder geschert wird, ist das sichtbare Rechteck im Szenen-Koordinatensystem nicht achsparallel. In diesem Fall
%Vor% gibt ein QPolygonF
(NICHT ein QRectF
) zurück, das das sichtbare Rechteck in den Szenenkoordinaten ist. Übrigens, QPolygonF
hat eine Memberfunktion boundingRect()
, die nicht das richtige sichtbare Rechteck der Ansicht zurückgibt, aber trotzdem nützlich sein könnte.
Ich habe mir die Haare stundenlang ausgezogen. Es gibt einen Thread hier darüber, aber nichts scheint zu funktionieren. QGraphicsView :: rect () gibt die Breite und Höhe zurück, aber die %code% und %code% 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 %code% und vert zurückgeben ... scheint bedeutungsloser Jibberish zu sein.
@ fabrizioM :
%Vor%Es klingt wie das, was Sie wollen, ist das Szenenrechteck. Die Methode %code% wird von %code% geerbt. Siehe:
Sie können das tun, was Sie getan haben, oder die Funktionen von mapToScene () verwenden. Sie können sich jedoch nicht darauf verlassen, dass das Rechteck der Szene "rectangle" ist, da die Szene in der Ansicht gedreht oder geschert wird, was zu einem allgemeinen Polygon führt, wenn es der Szene zugeordnet wird.
Wenn Ihre Anwendung solche Dinge natürlich nicht tut, können Sie natürlich davon ausgehen, dass ein Rechteck immer angemessen ist.
Es klingt wie das, was Sie wollen, ist das Szenenrechteck. Die Methode ::rect()
wird von QWidget
geerbt. Siehe:
Tags und Links c++ qt qgraphicsview