2012-12-11 50 views
1

我想創建一個小部件,將顯示一些信息。每個信息都將是一個QWidget,它包含多個帶有文本(信息)的QLabel。我的想法是將多個(這些數組)放入QScrollArea中,以便用戶可以查看它們上下滾動。以下代碼:QScrollArea與多個QWidgets只顯示空框

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的。我所得到根本的是,具有非常小的文本框:如果我拖出來,並重新大小它

small Text Example

,它正確地顯示:

Re-sized example

我有什麼要注意的是,如果我將其尺寸調整得太小,它不會生成卷軸。我需要解決這個問題?

回答

3

我猜改變:

scrollArea->setLayout(scrollWidgetLayout); 

某事物,如:

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

據我所知,你必須把工具到QScrollableArea使其真正滾動。設置其佈局可能不是你想要做的事情。