2011-04-13 57 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

相关问题