Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Sancho_s_rancho от Январь 10, 2009, 18:18



Название: QScrollArea на все доступное пространство.
Отправлено: Sancho_s_rancho от Январь 10, 2009, 18:18
Задача: Развернуть QScrollArea на все доступное место родительского виджета. На сколько я понимаю setSizePolicy(QSizePolicy::Ignored,QSizePolicy::Ignored) должно это делать.

Конструктор родительского виджета:
Код:
Wid::Wid()
{
   childWidget = new QWidget();
   scroll = new QScrollArea(this);
   scroll->setSizePolicy(QSizePolicy::Ignored,QSizePolicy::Ignored);
   scroll->setWidget(childWidget);
}

метод, меняющий размер виджета, находящего в QScrollArea

Код:
   childWidget->resize(600,600);
   qDebug() << this->size();
   qDebug() << scroll->size();
   qDebug() << childWidget->size();

результат:
QSize(633, 951)
QSize(4, 4)
QSize(600, 600)

Что делаю не так? Почему область прокрутки не занимает всю доступную площадь родительского виджета?


Название: Re: QScrollArea на все доступное пространство.
Отправлено: break от Январь 10, 2009, 18:34
У меня работало так:

Код:
	QScrollArea * scrollArea = new QScrollArea;
scrollArea->setWidgetResizable ( true );
scrollArea->setWidget ( ui.twTC_Props );
ui.vboxLayout->addWidget ( scrollArea );


Название: Re: QScrollArea на все доступное пространство.
Отправлено: Sancho_s_rancho от Январь 10, 2009, 18:58
У меня работало так:

Код:
	QScrollArea * scrollArea = new QScrollArea;
scrollArea->setWidgetResizable ( true );
scrollArea->setWidget ( ui.twTC_Props );
ui.vboxLayout->addWidget ( scrollArea );

У меня с лайаутом тоже заработало, но
1) На мой взгляд это не совсем очевидно
2)Лишняя сущность этот лайаут. Для одного-то объекта.

Хотя может мне просто не понятна идеология кутей...


Название: Re: QScrollArea на все доступное пространство.
Отправлено: Dendy от Январь 10, 2009, 19:09
Один обьект уже может достаточно сложно размещаться на родителе. С максимальными/минимальными размерами, отступами от краёв и так далее. У кют достаточно чёткая идеология: автоматическое размещение делается через абстрактный интерфейс QLayout, неважно насколько простым кажется это размещение. А лишняя сущность - это если бы они стали добавлять бесполезные методы на все случаи жизни типа QWidget::setAutoMaximizeSelfOnParent().