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

How to arrange items in QGridLayout when resizing?

我有一个 QGridLayout,我使用 QGridLayout::addWidget() 在其中动态添加了几个小部件。我对这些小部件没问题,因为它们都是一样的。

但是,我想知道在调整包含网格布局的小部件大小时如何处理它们的对齐方式。例如,如果我的小部件足够宽,我可以在一行中放置 5 个小部件:

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

但是如果我减小小部件的宽度,我希望所有小部件都可见,这意味着创建新行:

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

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

布局用于管理一组小部件的布局和大小。 QGridLayout 旨在处理静态网格内的小部件,也就是说,项目在列和行中的位置不会改变,因此无法创建该类型的配置。

Qt 有很好的文档,所以它也告诉我们如何创建自定义布局:How to Write A Custom Layout Manager

以上 link 显示的示例正是您想要的:Flow Layout Example