LINUX.ORG.RU

[Qt] [Custom Widget] Сохранение пропорций размера


0

0

Описал свой собственный виджет, в котором в paintEvent рисуется заданная картинка.

При смене картинки задаю minimumSize. Но если SizePolicy установить не в fixed, а в Expanding, то пропорции размеров искажаются.

Подскажите решение: как при произвольных размерах сохранять пропорции высоты и ширины, зная оригинальный размер?

Ответ на: комментарий от mannaz

Посмотрел.
Немного не то.

С выводом изображения проблем нет.

Мне нужно, чтобы, например, соотношения сторон виджета всегда были 16:10, вне зависимости от его размеров.

Сейчас я могу устанавливать размер либо оригинальный с SizePolicy == Fixed, либо вообще произвольный без сохранения соотношения с SizePolicy =! Fixed.

Я хочу произвольный размер с SizePolicy =! Fixed, но с сохранением соотношения сторон.

Не саму картинку на виджете, а размеры самого виджета надо контролировать.

Складывается впечатление, что это невозможно.

Fredrik ()

А если таким же образом, как и paintEvent, отлавливать resizeEvent, и устанавливать необходимые размеры с помощью QWidget::resize ?

Iceman82 ()
Ответ на: комментарий от Fredrik

Перегрузи resize(const QSize &s).
В своей ф-ии проверяй размеры, если необходим - изменя. Ну а после этого передавай в QWidget::resize(const QSize &s)

some_login ()

В коде отрисовки QPainter p(this); p.scale(width() / image.width(), height() / image.height()); p.drawPixmap(0, 0, &image);

как-то так.

indie ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.