Как разрешить масштабирование с одинаковым соотношением сторон в (Py) Qt? - PullRequest
1 голос
/ 27 октября 2009

Если у вас есть QImage, обернутый внутри QLabel, возможно ли увеличить его или уменьшить при изменении размера окна и сохранении соотношения сторон (чтобы изображение не искажалось)? Я понял, что он может масштабироваться с помощью setScaledContents (), и вы можете установить минимальный и максимальный размер, но изображение все равно теряет свой аспект.

Было бы замечательно, если бы это можно было объяснить с помощью Python (поскольку я не знаю c ++), но я возьму то, что смогу получить. : -)

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 27 октября 2009

Я показываю это как C ++, в котором находится документация, на которую я смотрю. Не должно быть слишком сложно конвертировать в python.

Вам необходимо создать пользовательскую производную QLayoutItem, которая переопределяет bool hasHeightForWidth() и int heightForWidth( int width), чтобы как-то сохранить соотношение сторон. Вы можете либо передать изображение и запросить его, либо просто установить соотношение напрямую. Вам также необходимо убедиться, что функция widget() возвращает указатель на соответствующую метку.

Как только это будет сделано, вы можете добавить элемент макета в макет так же, как в виджете. Поэтому, когда ваш ярлык будет добавлен, измените его, чтобы использовать свой класс элементов макета.

На самом деле я не проверял ничего из этого, поэтому на данный момент это теоретическое решение. Я не знаю ни одного способа сделать это решение через дизайнера, если бы это было желательно.

0 голосов
/ 27 октября 2009

Преобразуйте изображение в QPixmap (используйте QPixmap.fromImage(img)), а затем вы можете использовать scaledToHeight().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...