Qt QScrollWidget中的QVBoxLayout未更新大小
我的窗口中有一个QVBoxLayout作为指针,希望动态添加小部件(当用户按下按钮时,小部件被添加到VBoxLayout)。VBoxLayout设置为滚动区域中的布局。但是,如果我将小部件添加到VBoxLayout,VBoxLayout的大小不会改变,所有内容都会被压缩Qt QScrollWidget中的QVBoxLayout未更新大小,qt,qscrollarea,Qt,Qscrollarea,我的窗口中有一个QVBoxLayout作为指针,希望动态添加小部件(当用户按下按钮时,小部件被添加到VBoxLayout)。VBoxLayout设置为滚动区域中的布局。但是,如果我将小部件添加到VBoxLayout,VBoxLayout的大小不会改变,所有内容都会被压缩 m_ControlsLayout = new QVBoxLayout; //A member variable to add things later { QPushButton *PushButton = ne
m_ControlsLayout = new QVBoxLayout; //A member variable to add things later
{
QPushButton *PushButton = new QPushButton(tr("Add a new control"));
connect(PushButton, SIGNAL(clicked()), this, SLOT(addControl())); //Adds it
m_ControlsLayout->addWidget(PushButton, 1);
}
for(int i=0;i<10;i++) //I am adding 10 useless Widgets to fill the space
addControl();
QScrollArea *ScrollArea = new QScrollArea;
connect(this)
ScrollArea->setWidget(Layout2Widget(m_ControlsLayout));
我想我必须告诉QScrollArea它应该更新它的高度。当使用滚动区域显示自定义小部件“ControlWidget”的内容时,确保子小部件的大小提示设置为合适的值是很重要的。
在自定义小部件类上重新实现虚拟函数“QSize QWidget::sizeHint()。您是否尝试过
scrollArea->SetWidgetResizeable(true)
?我现在尝试过,如果添加此函数,VBoxLayout的大小将调整为scrollArea的高度。没有滚动条出现,所有内容都非常小(或者如果小部件较少,则所有内容都被拉伸)
m_ControlsLayout->addWidget(new ControlWidget);