LINUX.ORG.RU

QWidget для QPainter в QScrollArea

 


0

1

Значит так:
Я хочу получить QWidget с прокруткой, а в сам QWidget с помощью QPainter рисовать нечто заведомо огромное, так чтобы с помощью прокруток можно было бы просматривать все «огромное».
Qt опыта у меня нет, поэтому я решил сделать так:
В QScrollArea я зафигачил QWidget, в paintEvent`е которого я собственно рисую.
Также заимплементил ф-цию minimumSizeHint() с огромными значениями.
Но, прокрутки я не наблюдаю.
При уменьшении окна (когда оно становится меньше изначального) прокрутка появляется.

Что я делаю не так?

★★☆

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

Просто для эксперимента?
Мне нужно, чтобы у пользователя была возможность ресайза.
Но как бы он ни ресайзил, всё равно содержимое виджета на экран не влезет.

Stahl ★★☆
() автор топика
Ответ на: комментарий от Stahl

Так у тебя виджет фиксированного (очень большого) размера или нет?

trex6 ★★★★★
()

QScrollArea имеет медвежье свойство widgetResizable, по умолчанию true. Возможно, scrollarea подтягивает само размер виджета и не ставит полосы прокрутки.

А ещё: взгляни на QGraphicsView. Может быть, тебе нужен именно он.

schizoid ★★★
()
Ответ на: комментарий от trex6

!!!!
Это нелепо, но факт:
setFixedSize если его дёргать каждый раз при paintEvent выдал нужный результат.
Я бы до такого хака никогда бы не додумался.
Спасибо!

Stahl ★★☆
() автор топика
Ответ на: комментарий от trex6

Ну, думаю, можно его дёргать при resize.
Должно быть достаточно.

Stahl ★★☆
() автор топика

Забыл совсем

QWidget::setSizePolicy

schizoid ★★★
()
Ответ на: комментарий от Stahl

Это нелепо, но факт: setFixedSize если его дёргать каждый раз при paintEvent выдал нужный результат. Я бы до такого хака никогда бы не додумался.

Потому что ты еще не изучил, что такое size policy и как оно влияет на размеры виджета в лейауте. Лучше с этим освоиться раз и навсегда, чем безрезультатно подставлять различные значения с мыслью «ну уж это-то должно подойти».

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