2011-02-01 69 views
4

我是QT的新手。我试图通过尝试实现下面看到的这个小窗口来理解布局机制。它在QWidget下面是主窗口下的元素:QT布局 - 初始方向

  1. 一个大QWidget在所有客户区域上延伸。
  2. 窗口顶部的两个QWidget容器。两者应该有相同的高度,但正确的一个水平延伸,随着窗口的增长/收缩。
  3. 右上角的一个按钮容器小部件,具有固定的高度和宽度
  4. 大型QWidget容器填充客户区域的其余部分,应调整窗口大小。

父窗口本身是可调整大小的。

我正在寻找提示,我应该使用什么布局。我如何实现这个编程?定义什么自动延伸,什么与修正尺寸保持一致?以及如何将比例保持在需要保留的位置。

我会很感激你可能有的任何指针。

What I'm trying to achieve

回答

3

最简单的,恕我直言最好的方式来完成,这是通过QHBoxLayout,负责和QVBoxLayouts。你可以通过QtCreator中的设计者来做到这一点,但是如果你需要随着时间的推移来调整它,我发现它不能很好地工作。如果它是一组静态小部件,我建议使用QtCreator设计器来设计它,因为它会大大简化您的生活。

如果你打算以编程方式做,主窗口应该设置为使用QVBoxLayout,然后设置两个子QVBoxLayout,其中底部的窗口被配置为获取任何可以获得的空间。然后在顶部的QVBoxLayout中,添加一个QHBoxLayout和你的两个上面的组件。

+0

谢谢。我明白,布局对象中的单个项目会自动占据整个布局的大小。你如何设定两个项目的面积利用率?比如说你想要一个人是固定的,另一个是可伸缩的,或者是一个40%,另一个是60%。我无法找到用于此的“关键字”。不是从API的角度来看,甚至是在QT-Desitner GUI中。 – JasonGenX 2011-02-01 17:29:47

3

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

要使它们在代码中以不同比例拉伸,请在使用框布局时使用单独的参数。例如layout-> addWidget(button1,1); layout-> addWidget(button2,2);这会导致button2以按钮1的速率的两倍展开。要在设计器中执行此操作,请打开窗口小部件的sizePolicy属性并设置Horizo​​ntalStrech和/或VerticalSretch。请注意,在这种情况下,您需要设置尺寸策略的方向不是固定的。它也不会让一个小部件缩小到最小尺寸以下(它会比缩小比例太小)。