• Qt——QGridLayout


      1. 设置单元格比例

            在Qt中,如果你想设置网格布局(`QGridLayout`)中单元格的比例,你需要使用`QGridLayout`的拉伸系数(stretch factors)来控制行和列的相对大小。你可以通过调用`setRowStretch`和`setColumnStretch`方法来实现。

            以下是一个简单的例子,展示了如何为一个两列的布局设置不同的比例。假设我们想要第一列是第二列宽度的两倍:、

    1. #include
    2. #include
    3. #include
    4. #include
    5. int main(int argc, char *argv[]) {
    6.     QApplication app(argc, argv);
    7.     // 创建一个窗口
    8.     QWidget window;
    9.     // 创建一个网格布局
    10.     QGridLayout *layout = new QGridLayout(&window);
    11.     // 创建两个按钮
    12.     QPushButton *button1 = new QPushButton("Button 1");
    13.     QPushButton *button2 = new QPushButton("Button 2");
    14.     // 将按钮添加到布局中
    15.     layout->addWidget(button1, 0, 0); // 第一行第一列
    16.     layout->addWidget(button2, 0, 1); // 第一行第二列
    17.     // 设置列的拉伸系数
    18.     layout->setColumnStretch(0, 2); // 第一列的拉伸系数为2
    19.     layout->setColumnStretch(1, 1); // 第二列的拉伸系数为1
    20.     // 显示窗口
    21.     window.show();
    22.     return app.exec();
    23. }

            在上面的代码中,我们设置了第一列的拉伸系数为2,第二列的拉伸系数为1。这意味着第一列的宽度将是第二列的两倍。类似的,你可以通过调用`setRowStretch`方法来设置行的拉伸系数,控制行的高度比例。

            请注意,拉伸系数只有在布局的空间大于所需的最小尺寸时才会生效。如果窗口太小,无法满足所有控件的最小尺寸需求,则拉伸系数可能不会按预期工作,因为Qt会优先保证控件的最小尺寸。

    2. 设置布局之间的间隔

            在Qt中,你可以使用`QGridLayout`的`setHorizontalSpacing`方法来设置布局中列之间的水平间隔。同样地,`setVerticalSpacing`方法被用于设置行之间的垂直间隔。如果你想为整个网格设置统一的间隔,可以使用`setSpacing`方法。下面是一个简单的例子,展示了如何为网格布局中的列之间设置间隔:

     

    1. #include
    2. #include
    3. #include
    4. #include
    5. int main(int argc, char *argv[]) {
    6.     QApplication app(argc, argv);
    7.     // 创建一个窗口
    8.     QWidget window;
    9.     // 创建一个网格布局
    10.     QGridLayout *layout = new QGridLayout(&window);
    11.     // 创建两个按钮
    12.     QPushButton *button1 = new QPushButton("Button 1");
    13.     QPushButton *button2 = new QPushButton("Button 2");
    14.     // 将按钮添加到布局中
    15.     layout->addWidget(button1, 0, 0); // 第一行第一列
    16.     layout->addWidget(button2, 0, 1); // 第一行第二列
    17.     // 设置列之间的水平间隔
    18.     layout->setHorizontalSpacing(10);
    19.     // 如果你还想设置行之间的间隔,可以这样做
    20.     // layout->setVerticalSpacing(10);
    21.     // 如果你想为整个网格设置相同的间隔,可以使用 setSpacing 方法
    22.     // layout->setSpacing(10);
    23.     // 显示窗口
    24.     window.show();
    25.     return app.exec();
    26. }

            在上面的代码中,`setHorizontalSpacing(10)` 将布局中列之间的间隔设置为了10像素。通过调整`setHorizontalSpacing`的参数,你可以改变间隔的大小。

            请注意,这些间隔指的是控件之间的空间,不包括布局边缘与控件之间的空间。如果你还需要设置布局的边距,可以使用`setContentsMargins`方法。

    1. // 设置布局的上、右、下、左边距
    2. layout->setContentsMargins(10, 10, 10, 10);

            这将设置布局的四个边缘(上、右、下、左)的边距为10像素。

  • 相关阅读:
    砥砺的前行|基于labview的机器视觉图像处理|NI Vision Assisant(六)——Binary(二值图) 功能
    【Markdown】编辑器使用技巧大汇总5。类似表格的输入,字体格式的输入(尝试版,不怎么全,待后续继续补充)
    HTML核心(5)- a元素
    JAVA线程池的使用
    23软考备考已开始,网络工程师知识点速记~(3)
    undefined symbol: _ZN3c104impl8GPUTrace13gpu mmcv
    Unity_热更方案
    基于百度地图的交通查询的毕业设计(android)
    SpringBoot 监控
    openGauss学习笔记-93 openGauss 数据库管理-访问外部数据库-oracle_fdw
  • 原文地址:https://blog.csdn.net/qq_43287763/article/details/138170980