Come consentire il ridimensionamento con proporzioni uniformi in (Py) Qt?
-
06-07-2019 - |
Domanda
Se una QImage è racchiusa in una QLabel, è possibile ridimensionarla su o giù quando si ridimensiona la finestra e si mantengono le proporzioni (in modo che l'immagine non si distorca)? Ho capito che può essere ridimensionato usando setScaledContents () e puoi impostare una dimensione minima e massima, ma l'immagine perde ancora il suo aspetto.
Sarebbe bello se questo potesse essere spiegato usando Python (dato che non conosco c ++), ma prenderò quello che posso ottenere. : -)
Grazie in anticipo!
Soluzione
Sto mostrando questo come C ++, che è la documentazione che sto guardando. Non dovrebbe essere troppo difficile da convertire in Python.
Devi creare una derivata personalizzata di QLayoutItem
, che sovrascrive bool hasHeightForWidth ()
e int heightForWidth (int width)
per preservare il proporzioni in qualche modo. È possibile passare l'immagine e interrogarla oppure è possibile impostare direttamente il rapporto. Dovrai anche assicurarti che la funzione widget ()
restituisca un puntatore all'etichetta corretta.
Una volta fatto ciò, puoi aggiungere un elemento di layout a un layout come faresti con un widget. Pertanto, quando l'etichetta viene aggiunta, modificala per utilizzare la classe di elementi del layout personalizzato.
Non ho ancora testato nulla di tutto ciò, quindi è una soluzione teorica a questo punto. Non so come fare questa soluzione tramite il designer, se fosse desiderato.
Altri suggerimenti
Converti l'immagine in un QPixmap
(usa QPixmap.fromImage (img)
) e quindi puoi usare scaledToHeight ()
.