Erhalte ich ein sichtbares Rechteck von QGraphicsView?

8

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%     
mpen 31.08.2009, 01:32
quelle

6 Antworten

4

Vergiss es. Kam damit auf, was zu funktionieren scheint.

%Vor%     
mpen 31.08.2009, 05:30
quelle
18

Ordnen Sie das pixelbasierte Ansichtsfenster-Rechteck mit der Ansicht einfach der Szene zu:

%Vor%

Tschüss, Marcel

    
Marcel Taeumel 23.01.2011 18:46
quelle
3

hier ist eine mögliche Lösung (keine Ahnung, ob dies beabsichtigt ist)

%Vor%

HTH, Bernhard

    
Bernhard 29.07.2010 09:28
quelle
3
___ answer3361035 ___

hier ist eine mögliche Lösung (keine Ahnung, ob dies beabsichtigt ist)

%Vor%

HTH, Bernhard

    
___ answer4775675 ___

Ordnen Sie das pixelbasierte Ansichtsfenster-Rechteck mit der Ansicht einfach der Szene zu:

%Vor%

Tschüss, Marcel

    
___ answer1355932 ___

Vergiss es. Kam damit auf, was zu funktionieren scheint.

%Vor%     
___ answer1491774 ___

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.

    
___ answer 10849582 ___

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.

    
___ qstntxt ___

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%     
___ tag123c ___ C ++ ist eine universelle Programmiersprache. Es wurde ursprünglich als Erweiterung von C entworfen und behält eine ähnliche Syntax, ist aber jetzt eine völlig andere Sprache. Verwenden Sie dieses Tag für Fragen zu Code, der mit einem C ++ - Compiler kompiliert werden soll. ___ tag123qt ___ Qt ist ein plattformübergreifendes Anwendungsentwicklungs-Framework, das häufig für die Entwicklung von Anwendungssoftware verwendet wird, die auf verschiedenen Software- und Hardwareplattformen ohne oder mit nur geringer Änderung der zugrundeliegenden Codebasis ausgeführt werden kann. Qt ist sowohl mit kommerziellen als auch mit Open-Source-Lizenzen verfügbar. ___ qstnhdr ___ Erhalte ich ein sichtbares Rechteck von QGraphicsView? ___ tag123qgraphicsview ___ Eine QGraphicsView ist eine Klasse aus dem Qt-Toolkit, die ein Widget zum Anzeigen der Inhalte eines QGraphicsScene bereitstellt. ___ answer1385258 ___

Es klingt wie das, was Sie wollen, ist das Szenenrechteck. Die Methode %code% wird von %code% geerbt. Siehe:

Ссылка

    
___
Ralph Tandetzky 01.06.2012 11:40
quelle
2

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.

    
SixDegrees 29.09.2009 10:35
quelle
1

Es klingt wie das, was Sie wollen, ist das Szenenrechteck. Die Methode ::rect() wird von QWidget geerbt. Siehe:

Ссылка

    
Henrik Hartz 06.09.2009 09:02
quelle

Tags und Links