QScrollArea에서 위젯을 동적으로 추가 및 제거하고 스크롤 막대가 나타나기 전에 동시에 최대 4 개의 위젯을 표시하고 싶습니다. 그래서 기본적으로 0-3 위젯이 있고 다른 위젯을 추가하면 스크롤 영역이 새 높이에 맞게 크기가 조정 된 후 높이가 4 위젯 크기로 유지되고 스크롤하면 5, 6, ...Qt : 최대 4 개의 위젯을 표시하도록 QScrollArea 크기 조정
현재 위젯을 삽입/제거 할 때 다음 메소드를 호출합니다.
void WidgetList::resizeScrollArea()
{
// height of the first four widgets
int widgetsHeight = 0;
for (int i = 0; i < _widgets.size() && i < 4; ++i)
{
// height of a widget
widgetsHeight += _widgets.at(i)->sizeHint().height();
}
// some leeway to make sure we have some gap between the widgets
_ui->scrollArea->setFixedHeight(widgetsHeight + 5);
}
문제는 힌트 (sizehint)()을 (때로는 너무 큰) 올바른 높이가 항상되지 않는 것입니다,하지만 둘 다 크기() (너무 작은 자주). 따라서 스크롤 영역은 내용에 비해 너무 크지 만 때때로 작동합니다.
내 위젯이 모두 같은 높이가 아닌 경우가 있으며, 때로는 sizeHint가 올바른 것으로 보이며 때로는 크기입니다.
sizeHint는 위젯이 갖고 싶어하는 크기이며, 레이아웃이 제공하는 크기가 아니라는 것을 이해합니다. 그러나 크기가 올바르지 않은 이유는 알 수 없습니다.
내가 어떻게해야하는지에 대한 아이디어는 가장 높이 평가 될 것입니다.
[this answer] (http://stackoverflow.com/a/21265287/1329652)를보십시오. –