2
votes

I understand how to add a scrollArea to a particular widget. However in my case Qwidget has multiple child widgets and these are all set using QVBoxLayout. Now how can I add a scroll bar in this case? Here QWidget is not the center widget, its one of the pages of the TabWidget. My code looks like:

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

xTab = new QWidget;

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

xTab->setLayout(formLayout);

Now how can I set the scrollBar to xTab? I tried using

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

however, this isn't working.

Any idea/suggestions are helpful and appreciated.

2
What should be scrolling? The whole tab widget or just the contents of a single tab? Have you tried creating your UI in Qt Designer?andref
I just want the contents of the tab widget to be scrolling. I am not using Qt designer for my app, however I tried a sample program with Qt designer where I added a vertical scroll bar. The result was that it adds the scroll bar but doesn't scroll the contents.user408307

2 Answers

2
votes

Have you tried using QScrollArea as the tab page?

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

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

I had success using the following:

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

The QScrollArea defines where the scrollable widget will appear. If parent is 0, it's a non-modal window. setGeometry sets the QScrollArea instance to the desired dimensions (that of the tab). setWidget defines what widget the QScrollArea will actually be scrolling.