Qt在布局中自动安排小部件



我是Qt的新手,有一个问题,我还没有能够解决。

我有一个滚动区域,我添加小部件(小部件是什么并不重要)。每个小部件都有一个静态大小,它们都有相同的宽度(这可能很重要)。我要做的是有一个布局/设置,使所有这些小部件水平显示在滚动区域,直到没有足够的空间为另一个小部件,在这一点上,它开始把小部件放在一个新的行,继续直到没有留下。

我想过手工实现这个的方法,但我觉得这是Qt已经支持的东西,我只是没能找到关于它的文档。

您可以看到流程布局示例。它演示了从左到右、从上到下排列子部件的自定义布局。这些项目首先水平布局,然后在布局中的每一行空间用完时垂直布局。

FlowLayout类继承QLayout。它是一个自定义布局类,可以水平和垂直地排列其子部件。您可以像链接中所示的那样实现它,并创建一个包含流布局的自定义小部件,并将其设置为QScrollArea的小部件。

scrollArea->setWidgetResizable(true); // Important or else the widget won't expand to the size of the QScrollArea, resulting in the FlowLayout showing up as a vertical list of items rather than a flow layout
scrollArea->setWidget(new CustomWidget);

CustomWidget的构造函数中:

// Create FlowLayout
FlowLayout *flowLayout = new FlowLayout;
// Populate FlowLayout with your widgets
for (int i=0; i<n; i++) 
{
    ...
    flowLayout->addWidget(widget);
}
setLayout(flowLayout);

相关内容

  • 没有找到相关文章

最新更新