Question

Si vous avez une image QImage encapsulée dans un QLabel, est-il possible de l’agrandir ou de la réduire lorsque vous redimensionnez la fenêtre et que vous conservez les proportions (pour que l’image ne soit pas déformée)? Je pensais qu'elle pouvait évoluer à l'aide de setScaledContents () et que vous pouviez définir une taille minimale et maximale, mais que l'image perdait tout de même son aspect.

Ce serait bien si cela pouvait être expliqué en utilisant Python (puisque je ne connais pas le c ++), mais je vais prendre ce que je peux obtenir. : -)

Merci d'avance!

Était-ce utile?

La solution

Je présente ceci sous forme de C ++, ce qui correspond à la documentation que je regarde. Il ne devrait pas être trop difficile de convertir en python.

Vous devez créer un dérivé personnalisé de QLayoutItem , qui remplace bool hasHeightForWidth () et int heightForWidth (int largeur) afin de préserver le rapport d'aspect en quelque sorte. Vous pouvez soit transmettre l'image et l'interroger, soit définir directement le rapport. Vous devez également vous assurer que la fonction widget () renvoie un pointeur sur l'étiquette appropriée.

Une fois que cela est fait, vous pouvez ajouter un élément de mise en page à une mise en page de la même manière que vous utiliseriez un widget. Ainsi, lorsque votre étiquette est ajoutée, changez-la pour qu'elle utilise votre classe d'élément de présentation personnalisée.

Je n’ai pas vraiment testé cela, c’est donc une solution théorique pour l’instant. Je ne connais aucun moyen de faire cette solution par un concepteur, si cela était souhaité.

Autres conseils

Convertissez l'image en QPixmap (utilisez QPixmap.fromImage (img) ), puis vous pouvez utiliser scaledToHeight () .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top