Pregunta

Si tiene una QImage envuelta dentro de una QLabel, ¿es posible escalarla hacia arriba o hacia abajo cuando cambie el tamaño de la ventana y mantenga la relación de aspecto (para que la imagen no se distorsione)? Descubrí que puede escalar usando setScaledContents (), y puede establecer un tamaño mínimo y máximo, pero la imagen aún pierde su aspecto.

Sería genial si esto pudiera explicarse usando Python (ya que no sé c ++), pero tomaré lo que pueda obtener. :-)

¡Gracias de antemano!

¿Fue útil?

Solución

Estoy mostrando esto como C ++, que es en lo que se encuentra la documentación que estoy viendo. No debería ser demasiado difícil convertir a python.

Debe crear una derivada personalizada de QLayoutItem , que anula bool hasHeightForWidth () y int heightForWidth (int width) para preservar relación de aspecto de alguna manera. Puede pasar la imagen y consultarla, o simplemente puede establecer la relación directamente. También deberá asegurarse de que la función widget () devuelva un puntero a la etiqueta adecuada.

Una vez hecho esto, puede agregar un elemento de diseño a un diseño de la misma manera que lo haría con un widget. Entonces, cuando se agregue su etiqueta, cámbiela para usar su clase de elemento de diseño personalizado.

En realidad no he probado nada de esto, por lo que es una solución teórica en este momento. No sé de ninguna manera de hacer esta solución a través del diseñador, si eso se deseara.

Otros consejos

Convierta la imagen en un QPixmap (use QPixmap.fromImage (img) ) y luego, puede usar scaledToHeight () .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top