最关键的一句话就是下面
pScrollWnd->setWidgetResizable(true);
没有这一句,flowlayout中的控件只会竖向排列,不会横向添加。一个bug找了很久,自己做一个记录。
void IOPage_Input::initControls()
{
FlowLayout* playout = new FlowLayout();
for (int i=0;i<120;i++)
{
QIoControl* ptm = new QIoControl(this, "input" + QString::number(i));
playout->addWidget(ptm);
}
pSubWindow = new QWidget();
pSubWindow->setLayout(playout);
QGridLayout* pGridlayout = new QGridLayout();
pScrollWnd = new QScrollArea();
pScrollWnd->setWidgetResizable(true);
pScrollWnd->setWidget(pSubWindow);
pGridlayout->addWidget(pScrollWnd);
setLayout(pGridlayout);
}