2

我正在尝试创建一个显示一些信息的小部件。每个信息都是一个 QWidget,其中包含多个带有文本的 QLabel(信息)。我的想法是将多个(这些数组)放入 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。我得到的只是一个文本很小的框:

小文本示例

如果我将它拖出并重新调整大小,它会正确显示:

调整大小的示例

我注意到的是,如果我将它重新调整得太小,它不会生成滚动。我需要什么来解决这个问题?

4

1 回答 1

3

我想改变:

scrollArea->setLayout(scrollWidgetLayout);

喜欢某事:

QFrame* frame = new QFrame(scrollArea);
frame->setLayout(scrollWidgetLayout);
scrollArea->setWidget(frame);

据我所知,您必须将小部件放入 QScrollableArea 以使其真正可滚动。设置其布局可能不是您想要做的事情。

于 2012-12-11T11:28:53.510 回答