Pergunta

Se você tiver um QImage embrulhado dentro de um QLabel, é possível escalá-lo para cima ou para baixo quando você redimensionar a janela e manter a relação de aspecto (para que a imagem não fique distorcida)? Eu descobri que ele pode escalar usando setScaledContents (), e você pode definir um tamanho mínimo e máximo, mas a imagem ainda perde seu aspecto.

Seria ótimo se isso poderia ser explicado usando Python (desde que eu não sei c ++), mas eu vou levar o que eu posso começar. : -)

Agradecemos antecipadamente!

Foi útil?

Solução

Eu estou mostrando isso como C ++, que é o que a documentação que eu estou olhando é. Não deve ser muito difícil para converter em python.

Você precisa criar um derivado costume de QLayoutItem, que substitui bool hasHeightForWidth() e int heightForWidth( int width) para preservar a relação de aspecto de alguma forma. Você poderia passar a imagem e consultá-lo, ou você pode apenas definir a relação diretamente. Você também vai precisar para se certificar a função widget() retorna um ponteiro para a etiqueta apropriada.

Uma vez feito isso, você pode adicionar um item de layout para um layout da mesma maneira que você faria com um widget. Assim, quando o rótulo é adicionado, alterá-lo para usar seu personalizado classe de item de layout.

Eu não testei nada disso, por isso é uma solução teórica neste momento. Eu não sei de qualquer maneira de fazer isso solução através de designer, se isso era desejado.

Outras dicas

Converter a imagem para um QPixmap (QPixmap.fromImage(img) uso) e, em seguida, você pode usar scaledToHeight() .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top