【发布时间】:2015-03-06 11:33:04
【问题描述】:
我有一个QGridLayout,它将包含一堆小部件。当循环添加了太多小部件并且它们不能全部放在页面上时,就会出现问题。我想添加滚动条,但显示不正确。
此函数返回一个添加到主布局的选项卡,它包含网格布局:
QTabWidget *RegistersTab::createTab()
{
QTabWidget *tab = new QTabWidget(this);
std::vector<QGridLayout*> loVec; //to add to master layout
for(int i=0; i<2; i++) //number of pages
{
QWidget *client = new QWidget(this); //this part breaks it
QScrollArea *scrollArea = new QScrollArea(this);
scrollArea->setWidget(client);
QTabWidget *tabPage = new QTabWidget(client);
QGridLayout *loGrid = new QGridLayout(client);
tabPage->setLayout(loGrid);
QString title = QString("Page %1").arg(i);
tab->addTab(tabPage, title);
loVec.push_back(loGrid);
}
m_loGridVec.push_back(loVec);
return tab;
}
GridLayout 向量在那里,因此我可以添加小部件并稍后对其进行操作。目前,我的标签顶部只有一个灰色框 - 所以有些东西坏了。如果我删除滚动区域并将(client) 设置为(this)。
我猜有一个简单的修正?
编辑(标签的制作方式):
ui->lo->addWidget(m_tab);
m_tab->addTab(createTab(), title); // m_tabCbc is a QTabWidget;
【问题讨论】:
-
您没有在任何地方添加滚动区域。它将位于
QTabWidget(this) 内。据我所知,它应该在某个页面内。但是您正在将另一个选项卡小部件添加为页面。您还出于某种奇怪的原因为其设置了布局。你确定tabPage不应该只是QWidget? -
其实我有嵌套标签。所以想象你有“N”个模块,每个模块都包含“i”个子系统,所以它需要嵌套标签。那部分有效,我只是不知道如何滑入滚动条
-
那我假设滚动区域应该在子标签页的某处。您需要为
tabPage小部件添加一个页面,并在其布局中添加滚动区域。 -
是的,您的假设是正确的。每个嵌套选项卡都有不同数量的小部件,有些在网格上太多了,所以它需要一个滚动条。所以我需要一个 tabPage 包含一个布局,该布局将添加一个 ScrollWidget - 它的布局将是网格布局,其中包含目前占用太多空间的小部件?
-
听起来不错。
tabPage=>pageWidget(QWidget)=>layout=>scrollArea=>scrollAreaWidget(client?)=>layout(loGrid)。此外,您不需要为tabPage设置布局。