Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Alp от Август 24, 2009, 23:05



Название: QWidget + Layout + QScrollArea
Отправлено: Alp от Август 24, 2009, 23:05
Есть следующее: в главном окне лежит QScrollArea, в которой лежит мой виджет (QMyWidget) унаследованный от QWidget, внутри которого лейаут с несколькими QLabel.
При запуске приложения все QLabel на виджете растянуты по вертикали. Т.е. size() для каждой возвращает высоту 30, хотя sizeHint() возвращает 20. В итоге и QMyWidget выше, чем требуется.
Почему такое может происходить?
UPD: Быстрый воркэраунд: перегрузить sizeHint и возвращать из него layout->minimumSize(). Однако решение идеологически верное хочется знать

Вопрос №2: Есть ли относительно просто способ реализовать следующее поведение:
- виджет с лейаутом лежит в QScrollArea
- каждый виджет имеет минимальный размер
- каждый виджет растянут соотвественно своему весу в лейауте
- при изменении размеров окна (и родительского для лейаута виджета) виджеты в лейауте изменяют свои размеры до минимума, после чего ещё уменьшить размер окна невозможно
- при увеличении размера виджеты увеличиваются соотвественно весам в лейауте
Решено:
area->setWidget(splitter);
area->setWidgetResizable(1);