Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Odyssey от Апрель 24, 2012, 15:43



Название: QScrollArea не хочет иметь полосы прокрутки
Отправлено: Odyssey от Апрель 24, 2012, 15:43
Добрый день!
Мне необходимо отображать несколько сменяющих друг друга наборов небольших изображений. Каждый набор я решил отображать на отдельной странице стек-виджета внутри QGridLayout. При этом, чтобы размеры стек-виджета были постоянными, табличный компоновщик я дополнительно разместил внутри QScrollArea.
Все эти объекты создаются у меня в программе динамически. Стек-виджет помещается в уже имеющийся на форме лейаут методом insert.

Вот пример создания новой странички стек-виджета и размещения на ней области прокрутки и табличного компоновщика:

Код:
QScrollArea *newScrollArea = new QScrollArea;
QGridLayout *grid = new QGridLayout;

grid->setSizeConstraint(QLayout::SetMinimumSize);
stackWidget->addWidget(newScrallArea);
newScrollArea->viewport()->setLayout(grid);

А в дальнейшем табличные компоновщики grid на страницах стек-виджета заполняются метками с теми самыми исходными изображениями.

Проблема в том, что даже если размер QGridLayout становится достаточно большим,у области прокрутки не возникает полос прокрутки даже при необходимости (визуально изображения обрезаются границей QScrollArea). Пытался поиграть с методом setSizePolicy области прокрутки - не помогло.
Не подскажете, как решить проблему? :)


Название: Re: QScrollArea не хочет иметь полосы прокрутки
Отправлено: GreatSnake от Апрель 24, 2012, 15:47
Код
C++ (Qt)
QScrollArea::setWidgetResizable( true );


Название: Re: QScrollArea не хочет иметь полосы прокрутки
Отправлено: spirits25 от Апрель 24, 2012, 15:49
newScrallArea != newScrоllArea


Название: Re: QScrollArea не хочет иметь полосы прокрутки
Отправлено: spirits25 от Апрель 24, 2012, 15:52
NewScrollArea.setWidget (yourWidget);
NewScrollArea.setWidgetResizable(true);


Название: Re: QScrollArea не хочет иметь полосы прокрутки
Отправлено: Odyssey от Апрель 24, 2012, 16:23
Благодарю за помощь!

Я использовал дополнительный виджет-"посредник", на котором уже и разместил табличный компоновщик.

Код:
QScrollArea *newScrollArea = new QScrollArea;
QWidget     *newWidget     = new QWidget;
QGridLayout *grid = new QGridLayout;

newWidget->setLayout(grid);
newScrollArea->setWidget(newWidget);
stackWidget->addWidget(newScrallArea);

Метод setWidgetResizable тоже был полезен, хотя и не так критично.
Большое спасибо! :)