2011-04-13 55 views
9

我目前正在爲我的學校開發一個Qt項目。對於這個項目,我需要在窗口中列出未知數量的元素,而不調整其內容。哪個Qt Widget要滾動窗口小部件?

我在過去使用過一些VBoxLayout,但這不是我正在尋找的東西。這個小部件根據它包含的元素的數量調整它的內容大小。我想要的是根據需要在「滾動窗口小部件」中添加儘可能多的小部件,它將自動堆疊在一起,不會調整大小。

我嘗試過使用QScrollArea,但是我無法將元素堆疊在彼此上。

這裏是一個小圖畫說明我的問題:我如何與QVBoxLayoutenter image description here

回答

2

如果您的顯示元件很簡單,最簡單的解決方案是QListWidget。這會自動調整大小,並在添加項目時通知QScrollArea。您只需撥打myScrollAlrea -> setWidget (myListWidget)進行初始化,然後myListWidget -> addItem (myListWidgetItem)添加新項目。

10

這裏是和QScrollArea

然後添加你做這樣的項目時(與lay = techArea->layout()parent = techarea

for(std::set<Event::Enum>::iterator it = validEvents.begin(); it != validEvents.end(); 
    ++it){ 
     QCheckBox* chk = new QCheckBox(
     "text", parent); 

     if(lay){ 
      lay->addWidget(chk); 
     } 

    } 
2

RedX的回答有點含糊,但我得到了他的方法的工作:

QRadioButton *radio[40]; 

for (int i = 0;i<40;i++) 
    radio[i] = new QRadioButton(tr("&Radio button 1")); 

QWidget* techArea = new QWidget; 
techArea->setObjectName("techarea"); 
techArea->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding); 
techArea->setLayout(new QVBoxLayout(techArea)); 
ui->scrollArea->setWidget(techArea); 

QLayout *lay = techArea->layout(); 

for (int i = 0;i<40;i++) 
    lay->addWidget(radio[i]); 
+0

沒有滾動區域? – Trilarion 2015-08-28 14:36:22

相關問題