gpt4 book ai didi

c++ - 如何在Qt 中的网格布局中添加滚动条?

转载 作者:搜寻专家 更新时间:2023-10-31 01:02:05 28 4
gpt4 key购买 nike

我有一个 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 vector 在那里,所以我可以添加小部件并稍后对其进行操作。目前,我的选项卡顶部只有一个灰色框 - 所以有些东西坏了。如果我删除滚动区域并将 (client) 设置为 (this)

我猜想需要进行简单的更正?

编辑(如何制作标签):

ui->lo->addWidget(m_tab);

m_tab->addTab(createTab(), title); // m_tabCbc is a QTabWidget;

最佳答案

您不会在任何地方添加滚动区域。它会在 QTabWidget(this)里面。

正如您提到的,您需要嵌套选项卡。因此,您需要为 tabPage 小部件添加一个页面,并在其布局中添加滚动区域。

应该是这样的:

tabPage 
=> pageWidget(QWidget)
=> layout
=> scrollArea
=> scrollAreaWidget(client?)
=> layout(loGrid)

QWidget *client = new QWidget;
QScrollArea *scrollArea = new QScrollArea;
scrollArea->setWidgetResizable(true);
scrollArea->setWidget(client);
QGridLayout *loGrid = new QGridLayout;
client->setLayout(loGrid);

QTabWidget *tabPage = new QTabWidget;
QWidget *pageWidget = new QWidget;
pageWidget->setLayout(new QVBoxLayout);
pageWidget->layout()->addWidget(scrollArea);
tabPage->addTab(pageWidget, "Page");

QString title = QString("Page %1").arg(i);
tab->addTab(tabPage, title);

关于c++ - 如何在Qt 中的网格布局中添加滚动条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27838662/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com