Название: Использование QScrollArea Отправлено: Mikaell от Декабрь 14, 2011, 13:05 Добрый день!
Есть такая проблема. Я сделал форму и положил в неё достаточно много контролов. Получилось, что необходимое количество контролов требует прокрутки страницы вниз. Я решил использовать QScrollArea. Так как контролы уже положены и порядок и расположение заново делать не хочется, то мне нужно как-то перенести все уже сделанное в QScrollArea. На момент осознания необходимости прокуртуки у меня есть QStackedWidget лежащий в по умолчанию создающемся centralWidget и есть вертикальный layout в centralWidget. Я решил делать так (на основе например этого http://www.prog.org.ru/topic_16996_0.html): QScrollArea * scrollArea = new QScrollArea(this->centralWidget()); scrollArea->setWidgetResizable ( true ); scrollArea->setWidget ( ui.stackedWidget ); ui.verticalLayout_2->addWidget ( scrollArea ); Но скроллбар не появляется. Более того я попробовал сделать пустой проект и через Designer положить на форму QScrollArea, а потом в неё виджеты с элементами. Но тоже безуспешно - скроллбар не появляется, как ни изменяй размер формы. Название: Re: Использование QScrollArea Отправлено: _OLEGator_ от Декабрь 14, 2011, 14:07 Все дело в
Код
строка scrollArea->setWidgetResizable ( true ); - лишняя в вашем случае, учите мат часть Название: Re: Использование QScrollArea Отправлено: Mikaell от Декабрь 14, 2011, 15:10 Если эту строку убрать то вообще вылезет пустая форма. Так что проблема точно не в этом.
Название: Re: Использование QScrollArea Отправлено: _OLEGator_ от Декабрь 14, 2011, 15:20 И в этом тоже.
Из приведенного куска кода больше ничего не ясно, прикрепи минимальный проект с ошибкой Название: Re: Использование QScrollArea Отправлено: Mikaell от Декабрь 14, 2011, 16:35 Выкладываю.
Строку с "setWidgetResizable" пока оставил, так как без неё у меня совсем не работает. Название: Re: Использование QScrollArea Отправлено: _OLEGator_ от Декабрь 15, 2011, 09:37 Мда, тебе следует для начала хотя почитать книгу по Qt и понять как виджеты свои размеры меняют.
Ты накидал внутрь QStackWidget кучу виджетов, без автокомпановки, с ручным позиционированием, но тогда родительский виджет (QStackWidget) может иметь произвольные размеры. Либо укажи размер с помощью setMinimumSize, setMinimumHeight, либо используй автокомпановку с помощью Q*Layout. И вообще, что за изврат сначала добавлять QStackWidget на главную форму в layout, а потом в коде перебивать на его место QScrollArea, в которую насильно заталкивать QStackWidget. Создай его отдельно от главной формы и добавь его в QScrollArea в коде, зачем все в кучу мешать. |