调整大小时如何在QGridLayout中排列项目?

3
我有一个QGridLayout布局,我使用QGridLayout::addWidget()动态添加了多个小部件。对于这些小部件,我没有问题,因为它们都是相同的。
然而,当我调整包含网格布局的小部件的大小时,我想知道如何处理它们的对齐方式。例如,如果我的小部件足够宽,我可以在一行上放置5个小部件:
------------------------------------------------
| -------  -------  -------  -------  -------  |
| |  1  |  |  2  |  |  3  |  |  4  |  |  5  |  |
| -------  -------  -------  -------  -------  |
|                                              | 

但是如果我缩小部件的宽度,我希望所有的部件都能显示出来,这意味着创建新的行:

--------------------
| -------  ------- | 
| |  1  |  |  2  | | 
| -------  ------- | 
| -------  ------- | 
| |  3  |  |  4  | |
| -------  ------- | 
| -------          |
| |  5  |          |
| -------          |
|                  |

我认为可以通过resize事件来完成,但是怎么做呢?

{btsdaf} - eyllanesc
@eyllanesc 啊,很好。为什么不能用QGridLayout来实现呢?如果你想把你的评论作为答案,我会接受的。 - IAmInPLS
I already posted an answer - eyllanesc
{btsdaf} - IAmInPLS
1个回答

4
布局用于管理一组小部件的布局和大小。QGridLayout旨在处理静态网格内的小部件,也就是说,项目的列和行位置不会改变,因此无法创建该类型的排列方式。Qt有很好的文档,因此它还告诉我们如何创建自定义布局: 如何编写自定义布局管理器。上面的链接展示了一个示例,正是您想要的:流式布局示例

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接