you messed up the stack of items. The idea of having scrollable area is like this:
- on the bottom is parent widget (for example
QDialog
) - on top of this is scrollable area (
QScrollArea
) of fixed size - on top of this is a widget (
QWidget
) of some size, where usually only part of it is visible (it's supposed to be bigger than scrollarea) - on top of this is a layout
- and the last: layout manages child items (couple of
QPushButton
here)
代码如下:注意,没有布局,没法正确显示。
int
main( int _argc, char** _argv )
{
QApplication app( _argc, _argv );
QDialog * dlg = new QDialog();
dlg->setGeometry( 100, 100, 260, 260);
QScrollArea *scrollArea = new QScrollArea( dlg );
scrollArea->setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOn );
scrollArea->setWidgetResizable( true );
scrollArea->setGeometry( 10, 10, 200, 200 );
QWidget *widget = new QWidget();
scrollArea->setWidget( widget );
QVBoxLayout *layout = new QVBoxLayout();
widget->setLayout( layout );
for (int i = 0; i < 10; i++)
{
QPushButton *button = new QPushButton( QString( "%1" ).arg( i ) );
layout->addWidget( button );
}
dlg->show();
return app.exec();
}