QT布局-初始方向

QT布局-初始方向,qt,Qt,我是新来的。我试图通过实现下面这个小窗口来理解布局机制。它在主窗口QWidget下有以下元素: 一个大的QWidget,可以延伸到所有客户端区域 窗口顶部有两个QWidget容器。两者的高度应该相同,但右侧的高度会随着窗口的增大/缩小而水平延伸 右上角的一个按钮容器小部件,具有固定的高度和宽度 大的QWidget容器填充了客户端区域的其余部分,随着窗口大小的调整,它应该会调整大小 父窗口本身可以调整大小 我正在寻找关于我应该使用什么布局的提示。我如何通过编程实现这一点?定义哪些自动拉伸,哪些保持

我是新来的。我试图通过实现下面这个小窗口来理解布局机制。它在主窗口QWidget下有以下元素:

  • 一个大的QWidget,可以延伸到所有客户端区域
  • 窗口顶部有两个QWidget容器。两者的高度应该相同,但右侧的高度会随着窗口的增大/缩小而水平延伸
  • 右上角的一个按钮容器小部件,具有固定的高度和宽度
  • 大的QWidget容器填充了客户端区域的其余部分,随着窗口大小的调整,它应该会调整大小
  • 父窗口本身可以调整大小

    我正在寻找关于我应该使用什么布局的提示。我如何通过编程实现这一点?定义哪些自动拉伸,哪些保持固定大小?以及如何将比例保持在需要保持的位置

    如果您有任何指示,我将不胜感激


    实现这一点最简单也是最好的方法是通过QHBoxLayout和QVBoxLayout。你可以通过QtCreator中的设计器来实现这一点,但是如果你需要随着时间的推移进行调整,我发现它并不完美。如果它是一组静态的小部件,我建议使用QtCreator设计器进行设计,因为它将大大简化您的生活


    如果你想通过编程来实现,那么主窗口应该设置为使用QVBoxLayout,然后再设置两个子QVBoxLayout,其中底部的一个配置为占用它可以获得的任何空间。然后在顶部的QVBoxLayout中,添加一个QHBoxLayout和两个上面的组件。

    要在小部件上调用setFixedSize(inth,intw)的代码中将小部件设置为固定大小。要在Designer中执行此操作,请单击小部件并查看QWidget部分中的属性编辑器。打开sizePolicy thingy并将“水平”和/或“垂直”设置为“固定”。然后打开几何图形并设置宽度和高度


    为了使它们在代码中以不同的比率拉伸,在使用方框布局时,可以使用单独的参数。例如布局->添加小部件(按钮1,1);布局->添加小部件(按钮2,2);这将导致按钮2以两倍于按钮1的速度膨胀。要在designer中执行此操作,请打开小部件的sizePolicy属性并设置HorizontalStretch和/或VerticalSretch。请注意,在这种情况下,对于要设置拉伸的方向,不需要固定大小策略。此外,它决不会让一个小部件缩小到其最小尺寸以下(它宁愿把比例弄乱,也不愿缩小得太小)。

    谢谢。我知道布局对象中的单个项目将自动占据该布局的整个大小。如何设置两项的面积利用率?如果你想一个固定,另一个可拉伸,或者一个40%,另一个60%。我找不到用于此的“关键字”。不是从API的角度,甚至不是在QT Desitner GUI中。这是理解特定问题的最佳资源。它解释了很多事情,包括“sizePolicy”(按重量拉伸)。