Frage

Wenn Sie eine QImage in einem QLabel gewickelt ist es möglich, es zu skalieren nach oben oder unten, wenn Sie die Größe des Fensters und das Seitenverhältnis beibehalten (so dass das Bild verzerrt nicht worden)? Ich fand heraus, dass es skaliert werden kann setScaledContents () verwenden, und Sie können eine minimale und maximale Größe festgelegt, aber das Bild verliert noch sein Aussehen.

Es wäre toll, wenn dies mit Python erklärt werden könnte (da ich nicht weiß, c ++), aber ich nehme, was ich kriegen kann. : -)

Vielen Dank im Voraus!

War es hilfreich?

Lösung

Ich zeige dies als C ++, das ist es, was die Dokumentation ich bin auf der Suche ist in. Es sollte nicht allzu schwierig sein, Python zu konvertieren.

Sie benötigen ein eigenes Derivat von QLayoutItem zu schaffen, die bool hasHeightForWidth() und int heightForWidth( int width) überschreiben irgendwie das Seitenverhältnis zu erhalten. Sie könnte entweder das Bild und Abfrage es passieren, oder Sie könnten nur das Verhältnis direkt eingestellt. Sie werden auch die widget() Funktion sicher gibt einen Zeiger auf das richtige Etikett vornehmen müssen.

Sobald dies geschehen ist, können Sie ein Layout-Element zu einem Layout auf die gleiche Weise hinzufügen würden Sie ein Widget. Also, wenn Ihr Etikett wird hinzugefügt, ändern Sie Ihre benutzerdefinierte Layout Elementklasse zu verwenden.

Ich habe nicht wirklich irgendetwas davon getestet, so dass es eine theoretische Lösung an dieser Stelle ist. Ich weiß nicht von irgendeiner Weise dieser Lösung durch Designer zu tun, wenn dies gewünscht wurde.

Andere Tipps

Konvertieren Sie das Bild auf eine QPixmap (Verwendung QPixmap.fromImage(img)) und dann, können Sie scaledToHeight() .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top