2

いくつかの情報を表示するウィジェットを作成しようとしています。各情報は、テキスト(情報)を含む複数の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を拡張します。私が得ているのは、非常に小さなテキストを持つ単純なボックスです。

小さなテキストの例

ドラッグしてサイズを変更すると、正しく表示されます。

サイズ変更された例

私が気付いたのは、サイズを小さくしすぎると、スクロールが生成されないことです。これを修正するには何が必要ですか?

4

1 に答える 1

3

私は変わると思います:

scrollArea->setLayout(scrollWidgetLayout);

のようにsthに:

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

私の知る限り、ウィジェットをQScrollableAreaに入れて、本当にスクロール可能にする必要があります。そのレイアウトを設定することはおそらくあなたがしたいことではありません。

于 2012-12-11T11:28:53.510 に答える