QScrollArea - 包含许多子项的窗口小部件的滚动条

时间:2016-01-12 18:49:03

标签: c++ qt

所以,QScrollArea我遇到了一些问题。

我想在QScrollArea中添加一个包含许多子项的小部件,但我没有得到任何滚动条。

下面是代码:

QDialog *dialog = new QDialog();
QVBoxLayout *dialoglayout = new QVBoxLayout( dialog );

QScrollArea *area = new QScrollArea();

dialoglayout->setMargin( 0 );
dialoglayout->addWidget( area );

area->setAlignment( Qt::AlignCenter );
area->setAlignment( Qt::AlignTop );
area->setWidgetResizable( true );

// mainwidget has a lot of children
QWidget *mainwidget = randomclass.getWidget();
QVBoxLayout *mainwidgetlayout = new QVBoxLayout( mainwidget );

dialog->setWindowFlags( Qt::Window );

area->setWidget( mainwidget );

dialog->showMaximized();

如果mainwidget比scrollarea大,那么内容就会溢出。

任何人都可以帮助我吗? 提前谢谢。

1 个答案:

答案 0 :(得分:2)

某些小部件不会报告要滚动的区域,这会导致与滚动区域混淆。对于QScrollarea对象调整内容:

myWidget->setMinimumSize(myWidget->sizeHint());  // assume the min size 
scrollArea->setWidget( myWidget );               // use that widget in scroll area

也可能需要启用特定的滚动条,具体取决于内容:

scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);