2010-08-02 4 views
2

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

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); 

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

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

+0

Что нужно прокрутить? Весь виджет вкладки или просто содержимое одной вкладки? Вы пытались создать свой интерфейс в Qt Designer? – andref

+0

Я просто хочу, чтобы содержимое виджета вкладки было прокруткой. Я не использую конструктор Qt для своего приложения, однако я попробовал образец программы с дизайнером Qt, где я добавил вертикальную полосу прокрутки. В результате она добавила полосу прокрутки, но не прокручивала содержимое. – user408307

ответ

2

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

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

xTab = new QScrollArea; 
formLayout = new QFormLayout; formLay.... 
xTab->setLayout(formLayout); 
center->addTab(xTab, "XXX Tab"); 
+0

Я тоже так пробовал. Однако в этом случае это изменение размера виджета. На этой вкладке у меня есть textBrowser, и вместо того, чтобы позволить scrollBar прокручивать содержимое, TextBrowser изменяется так же, как и линейныйEdit, и все виджеты настраиваются в доступном пространстве. – user408307

+0

Я только установил xTab-> setWidgetResizable (false) - хотя его по умолчанию. Даже это не помогло. Кроме того, мне интересно, так и setWidget (xTab) не являются такими же функциональными. – user408307

+1

по умолчанию у большинства виджетов установлена ​​политика размера QSizePolicy :: Preferred, что означает, что виджет может быть расширен, но для этого нет никакого преимущества. Вы можете установить ограничения минимального размера на дочерние виджеты, чтобы обеспечить их удобство использования –

0

Я имел успех, используя следующие:

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

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

Смежные вопросы