Russian Qt Forum
Сентябрь 30, 2024, 22:31 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QScrollArea не хочет иметь полосы прокрутки  (Прочитано 5234 раз)
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 области прокрутки - не помогло.
Не подскажете, как решить проблему? Улыбающийся
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Апрель 24, 2012, 15:47 »

Код
C++ (Qt)
QScrollArea::setWidgetResizable( true );
Записан

Qt 5.11/4.8.7 (X11/Win)
spirits25
Гость
« Ответ #2 : Апрель 24, 2012, 15:49 »

newScrallArea != newScrоllArea
Записан
spirits25
Гость
« Ответ #3 : Апрель 24, 2012, 15:52 »

NewScrollArea.setWidget (yourWidget);
NewScrollArea.setWidgetResizable(true);
Записан
Odyssey
Гость
« Ответ #4 : Апрель 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 тоже был полезен, хотя и не так критично.
Большое спасибо! Улыбающийся



Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.065 секунд. Запросов: 22.