Как добавить полосу прокрутки в родительский QWidget

Я понимаю, как добавить scrollArea к определенному виджету. Однако в моем случае Qwidget имеет несколько дочерних виджетов, и все они устанавливаются с помощью QVBoxLayout. Теперь, как я могу добавить полосу прокрутки в этом случае? Здесь QWidget не является центральным виджетом, это одна из страниц TabWidget. Мой код выглядит так:

QTabWIdget *center = new QTabWidget; setCentralWIdget(center);

xTab = new QWidget;

formLayout = new QFormLayout; formLayout->addWidget(...); formLayout->addWidget(...); formLayout->addWidget(...); formLayout->addWidget(...);

xTab->setLayout(formLayout);

Теперь, как я могу установить scrollBar на xTab? я пытался использовать

scrollArea = new QScrollArea;
scrollArea->setWidget(xTab);

однако это не работает.

Любые идеи/предложения полезны и приветствуются.


person user408307    schedule 02.08.2010    source источник
comment
Что должно прокручиваться? Весь виджет вкладки или только содержимое одной вкладки? Вы пытались создать свой пользовательский интерфейс в Qt Designer?   -  person andref    schedule 03.08.2010
comment
Я просто хочу, чтобы содержимое виджета вкладки прокручивалось. Я не использую дизайнер Qt для своего приложения, однако я попробовал пример программы с дизайнером Qt, где я добавил вертикальную полосу прокрутки. В результате он добавляет полосу прокрутки, но не прокручивает содержимое.   -  person user408307    schedule 05.08.2010


Ответы (2)


Вы пробовали использовать QScrollArea в качестве вкладки?

QTabWIdget *center = new QTabWidget; setCentralWIdget(center);

xTab = new QScrollArea; 
formLayout = new QFormLayout; formLay....
xTab->setLayout(formLayout);
center->addTab(xTab, "XXX Tab");
person ak.    schedule 04.08.2010
comment
Я тоже так пробовал. Однако в этом случае изменяется размер виджетов. На этой вкладке у меня есть textBrowser, и вместо того, чтобы позволить scrollBar прокручивать содержимое, размер TextBrowser изменяется так же, как lineEdit, и все виджеты настраиваются в доступном пространстве. - person user408307; 05.08.2010
comment
Я исключительно установил xTab-›setWidgetResizable(false) — хотя это по умолчанию. Даже это не помогло. Кроме того, мне интересно, что setWidget(xTab) не то же самое функционально. - person user408307; 05.08.2010
comment
по умолчанию политика размера большинства виджетов установлена ​​в QSizePolicy::Preferred, что означает, что виджет можно расширить, но в этом нет никакого преимущества. Вы можете установить ограничения минимального размера для дочерних виджетов, чтобы обеспечить их удобство использования. - person ak.; 05.08.2010

У меня был успех, используя следующее:

scroll=new QScrollArea(mainWindow->centralWidget);
scroll->setGeometry(mainWindow->tabWidget->geometry());
scroll->setWidget(mainWindow->tabWidget);
scroll->show();

QScrollArea определяет, где появится прокручиваемый виджет. Если parent равен 0, это немодальное окно. setGeometry устанавливает для экземпляра QScrollArea желаемые размеры (вкладки). setWidget определяет, какой виджет QScrollArea будет фактически прокручиваться.

person Bruce    schedule 29.05.2013