[SOLVED]scrollbars on a standard QWidget
For some days I have been to add scrollbars on a standard QWidget that contains other QWidgets.The number of contained widgets can be modified at runtime.QScrollArea seemed like a good starting point but I haven't been able to display scrollbars so far.
The "doc":http://qt-project.org/doc/qt-4.8/qscrollarea.html says that to use QScrollArea on a standard QWidget you have to implement sizehint and apply QLayout::SetMinAndMaxSize constraint to the layout.
I have tried to follow all that to no avail.
This is how I implemented sizeHint:
class MStandardWidget : public QWidget
explicit MStandardWidget(QWidget *parent = 0);
virtual QSize sizeHint () const
and this is how my widgets are layed out in the constructor of my mainWidget:
//I able to see this dark background ,meaning that my scrollArea is there,I just
//can't figure out why the scrollbars are not showing up.
labelContainerLayout=new QVBoxLayout(); labelContainerLayout->setSizeConstraint(QLayout::SetNoConstraint); QLabel * mLabel1=new QLabel("TESTLABEL1",this); labelContainerLayout->addWidget(mLabel1); labelContainer->setLayout(labelContainerLayout); //labelContainer->setFixedSize(500,500); labelContainer->setMinimumSize(200,200); scrollArea = new QScrollArea; scrollArea->setBackgroundRole(QPalette::Dark); scrollArea->setWidget(labelContainer);
No matter how many things I add in the scrollArea, scrollbars are just not showing up.May be there is something I am missing here,or doing wrong? Please help.
maybe because you don't add the QScrollArea to your main layout ;)
scrollArea = new QScrollArea;
widgetLayout->addWidget(labelContainer); //<-- add scrollArea here instead
You have saved my day more than once already!
I thought that applying a scrollArea to the widget and adding the widget to the layout as usual does the trick but I obviously was wrong!I did what you said and it is working just fine.