【问题标题】:QT Designer - How to create a layoutQT Designer - 如何创建布局
【发布时间】:2020-12-20 11:35:40
【问题描述】:

我是 QT 新手,尤其是 QT Designer,我发现它非常不直观。

我尝试在 Qt Designer 中实现以下布局。

说明:

  • 黄色 -> 应用程序窗口
  • 蓝色 -> 2 个侧面按钮,高度为红色高度和白色高度
  • RED -> 应该是蓝色高度的 2/3 左右
  • 白色 -> 也应该是蓝色高度的 1/3 左右

布局:

  • RED -> 水平布局
  • 白色 -> 水平布局
  • 红色 + 白色 -> 垂直布局
  • 蓝色 +(红色 + 白色)-> 水平布局
  • (BLUE + (REDs + WHITEs)) + SPACER -> 垂直布局(因为它需要在按钮和应用程序顶部之间留出一些空间)

但是如果我应用我上面所说的那些,我会得到这样的东西:

就我的搜索而言,我可以使用 在拆分器中水平布局在拆分器中水平垂直布局 来保持我想要的纵横比,但是然后我可以拆分应用程序,我不想要那个。 谁能帮我理解我该怎么做?或者这样做的唯一方法是使用 C++?

【问题讨论】:

    标签: c++ qt layout qt-designer qlayout


    【解决方案1】:

    我想你要找的是QGridLayout

    在 QGridLayout 中,您可以为每个小部件决定它将占据多少行(只需拖动其边框)以及每行/列的各种“权重”(参数称为 rowStretchcolumnStretch)。

    示例: 您的布局可能组成如下:

    一个大的黄色矩形是第一个 QGridLayout(1 行 x 5 列),它包含(从左到右):

    • 您的第一个蓝色元素(占用 1 行 1 列);
    • 3 个绿色的 QGridLayouts;
    • 您的第二个蓝色元素(占用 1 行 1 列);

    绿色的 QGridLayouts(2 行 x 2 列)是这样配置的:

    • 您的红色元素(占用 1 行 2 列,并且 rowStretch 为 2);
    • 您的第一个白色元素,(占用 1 行 1 列,并且 rowStretch 为 1);
    • 您的第二个白色元素,(占用 1 行 1 列,并且 rowStretch 为 1);

    这样,红色和白色元素垂直比例为 2 比 1,并且(因为它们一起占据蓝色元素的同一行)蓝色高度是红色 + 白色的总和。

    【讨论】: