我正在尝试创建一个可以显示一些信息的小部件。每个信息都是一个包含多个带文本(信息)的QLabel的QWidget。我的想法是将多个(这些数组)放入QScrollArea中,以便用户可以上下滚动查看它们。以下代码:
InfoWidget::InfoWidget(QWidget* parent) : QWidget(parent){
widgets = new QVector<MarkerInfoWidget*>();
csv_data = 0;
csv_velocity = 0;
labels = 0;
infoWidgetLayout = new QVBoxLayout(this);
setLayout(infoWidgetLayout);
scrollArea = new QScrollArea(this);
scrollWidgetLayout = new QVBoxLayout(scrollArea);
scrollArea->setLayout(scrollWidgetLayout);
infoWidgetLayout->addWidget(scrollArea);
//Test
QString name = "TEST";
for(int i=0; i<10; i++){
MarkerInfoWidget* markerWidget = new MarkerInfoWidget(name, scrollArea);
scrollWidgetLayout->addWidget(markerWidget);
widgets->append(markerWidget);
}
}
MarkerInfoWidget和InfoWidget都扩展了QWidget。我得到的只是一个文字非常小的框:
如果我将其拖出并重新调整大小,则会正确显示:
我注意到的是,如果我将它调整得太小,它就不会产生滚动。我需要解决这个问题?
答案 0 :(得分:3)
我想改变:
scrollArea->setLayout(scrollWidgetLayout);
表示:
QFrame* frame = new QFrame(scrollArea);
frame->setLayout(scrollWidgetLayout);
scrollArea->setWidget(frame);
据我所知,您必须将widget放入QScrollableArea才能使其真正可滚动。设置它的布局可能不是你想要做的事情。