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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: ScrollBar при изменении размера окна  (Прочитано 6753 раз)
Joss
Гость
« : Июль 10, 2009, 01:27 »

Добрый день от новичка.

Ни как еще не могу победить компоновку. Суть проблемы:

Основа: MainWindow, на нем сверху размещены кнопки, чуть ниже Stacked Widget с набором чекбоксов.
Хочется: появление вертикальной полосы прокрутки (в которой будет прокручиваться Stacked Widget) при уменьшении вертикальных размеров окна.

В дизайнере создан:

- Widget
- в Widget помещен Stacked Widget

Код дизайнера:
Код:
...
        widget = new QWidget(tab_3); // создал внутри табвиджета область, в которой хочется иметь прокрутку при ресайзе
...
        stackedWidget = new QStackedWidget(widget); // добавил основной контент

В коде самостоятельно уже прописал:

Код:
...
    pm_scrollArea = new QScrollArea(widget);
    pm_scrollArea->setWidget(stackedWidget); // вопрос 1
    pm_scrollArea->setWidgetResizable(true);
    pm_scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
    pm_scrollArea->setSizePolicy(QSizePolicy::Maximum,QSizePolicy::Maximum); // вопрос 2
    pm_scrollArea->setMaximumSize(400,400);

Вот тут я начинаю плавать:

1: здесь получается что widget стал потомком QScrollArea, но в дизайнере он был потомком tab_3. Это нормально?
2: после размышления, я пришел к выводу, что нам нужно установить setWidgetResizable для QScrollArea, чтобы он был видимым всегда, при ресайзе окна, но при установке этого флага область сворачивается в минимальную, что-то ничего не получилось сделать.

Т.е. сейчас, если поставить setWidgetResizable(false) - области прокрутки не появляются при уменьшении размера окна. Если поставить true - вся область сворачивается в минимальную - по несколько пикселов шириной.

Может быть вместо Widget в дизайнере надо было все обернуть в какой-нибудь Vertical Layout?

Буду очень благодарен за ответы, чтобы хоть как то сдвинуться.
« Последнее редактирование: Июль 10, 2009, 01:31 от Joss » Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Июль 10, 2009, 01:36 »

>>1: здесь получается что widget стал потомком QScrollArea,
pm_scrollArea = new QScrollArea(widget); // pm_scrollArea является дочерним виджетом для widget
« Последнее редактирование: Июль 10, 2009, 01:42 от lit-uriy » Записан

Юра.
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #2 : Июль 10, 2009, 01:38 »

1) в Дизайнере положи на главное окно ScrollArea
2) выдели главное окно и выбери одну из компоновок, вертикальную или горизонтальную
3) на ScrollArea положи Stacked Widget.
4) выдели ScrollArea и выбери одну из компоновок, вертикальную или горизонтальную
5) Настрой ScrollArea как тебе надо.
« Последнее редактирование: Июль 10, 2009, 01:41 от lit-uriy » Записан

Юра.
Joss
Гость
« Ответ #3 : Июль 10, 2009, 02:07 »

Огромное спасибо!
Еще нужно было Fixed сделать для контента внутри ScrollArea.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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