QLayoutItem和QWidget之间的Qt布局关系

Qt Layout relationship between QLayoutItem and QWidget

本文关键字:Qt 布局 关系 之间 QWidget QLayoutItem      更新时间:2023-10-16

在文档中没有很好地说明这一点,但是当我调用QBoxLayout::insertWidget时实际发生了什么。它分配一个QLayoutItem,以某种方式与小部件关联,然后将QLayoutItem添加到布局?为什么需要这样的间接解释?我正在制作自定义布局,并希望能够在该布局的任何索引中插入小部件,但是我不完全了解该机制。

因为布局操作的是布局项,而不是小部件。QLayoutItem包含一个它自己的函数列表,这些函数用于在布局中定位layoutitem,并适当地调整它的大小/对齐。

举一个简单的例子:你有一个300px宽的垂直布局。这意味着你添加的每个布局项也将是300px宽。现在想象一下在其中添加一个50x50的小部件。由于布局有自己的几何形状,大小和其他东西,你将能够正确地插入小部件(layoutItem将保持300px宽,小部件将保持50px宽,没有什么会中断),这将是很难/不可能的,如果你直接操作小部件。