2013-02-19 3 views
2

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

Я хочу отобразить изображение, которое автоматически преобразуется в размер, чтобы оно было вместимо в пространство, которое доступно. В настоящее время я делаю это, создавая класс, полученный из QLabel, который реализует void resizeEvent(QResizeEvent*), где я делаю QPixmap::scaled, чтобы изменить размер изображения. Проблема в том, что это работает только тогда, когда виджет увеличивается, потому что виджет не получает resizeEvent, когда я пытаюсь сделать виджет меньше. Я предполагаю, что, поскольку я устанавливаю изображение на тот же размер, что и виджет, не разрешается меньше менять размер? Я предполагаю, что я мог бы попытаться создать более мелкое изображение, чтобы создать своего рода «границу» вокруг изображения, что, возможно, позволило бы создавать события размера размера при уменьшении площади. Есть предположения?

ответ

0

resizeEvent отправляется всякий раз, когда изменяется размер. Неважно, увеличено или нет. Но вы можете установить размер политики и Max/Min для ограничения виджета в сокращении/увеличении. Поэтому, если у вас есть ваш виджет, не получающий resizeEvent И он не сжимается, а затем посмотрите на свою политику размера и минимальную ширину/высоту. Если он сжимается, но у вас нет resizeEvent, то у вас есть некоторая ошибка в вашей логике, я считаю.

В качестве альтернативы вы можете использовать paintEvent для рисования изображений и использования QWidget :: rect() для ширины и высоты виджета.

+0

он не сжимается (и, следовательно, он не получает resizeEvent). Я посмотрю на эту политику изменения размера – Lieuwe

0

Попробуйте изменить size policy наклейки на QSizePolicy :: Preferred.

Ознакомьтесь с политикой размера в целом.

Смежные вопросы