Ich verwende Grafikansicht Framework zum Hinzufügen von Elementen in der Laufzeit in die Ansicht. Die Elemente werden wie im vertikalen Layout untereinander platziert.Rand der Position des Artikels in QGraphicsView während der Größenanpassung
Ich platziere mein Objekt immer an der Startposition der Szene (10,10). aber während die Größe der Ansicht geändert wird, wird die Marge angepasst. Wie wird bei jeder Größenänderung des Ansichtsfensters der gleiche Rand beibehalten?
i gegoogelt und gefunden
QTransform Matrix(1, 0, 0, 0, 1, 0, 0, 0, 1);
Matrix.scale(width()/sceneRect().width(), height()/sceneRect().height())
setTransform(Matrix);
hilft, den Marge bei der Wiederherstellung, aber es schrumpft auch die auf der Ansicht Höhe Ration aus Artikeln.
Ich wollte immer die gleiche Artikelgröße beibehalten, selbst wenn das Ansicht-Widget verkleinert oder erweitert wird. Bildlaufleiste muss erscheinen.
danke für die klare antwort. Ja, ich füge Artikel nur zur Szene hinzu. sagen wir, dass die Szenenkoordinate (0,0,1000,1000) ist, habe ich den Gegenstand bei QPoint (18,12) platziert, um eine Margenlücke zu erhalten. aber wenn ich das Ansichtsfenster verändere, nehmen diese Ränder zu. die Codezeilen, die ich hinzugefügt habe, werden helfen, den Rand zu erhalten, aber auch den Gegenstand zu skalieren, aber ich muss den Gegenstandsschrumpf ignorieren. – Wagmare
Ich müsste den Code selbst schreiben, um absolut sicher zu sein, aber wenn Sie diese Transformationsmatrixwerte untersuchen, werden Sie feststellen, dass die Skalierungsfaktoren (m11 und m22) bei der Größenänderung der Ansicht erhalten bleiben sollen. Ich denke, du musst QGraphicsView ableiten und resizeEvent überschreiben und dort die QGraphicsView-Skalierungsfaktoren zurücksetzen. – goug
sicher werde ich es tun goug .. danke dir so sehr. Ich werde gemäß Ihrer Empfehlung aktualisieren und Ihnen hier antworten. – Wagmare