Добрый день от новичка.
Ни как еще не могу победить компоновку. Суть проблемы:
Основа: 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?
Буду очень благодарен за ответы, чтобы хоть как то сдвинуться.