• Qt窗体设计的布局


    本文介绍Qt窗体的布局。

    Qt窗体的布局分为手动布局和自动布局,手动布局即靠手工排布各控件的位置。而自动布局则是根据选择的布局类型自动按此类型排布各控件的位置,使用起来比较方便,本文主要介绍Qt的自动布局。

    1.垂直布局

    垂直布局就是将其中的控件按垂直方向等间隔排布。如下图所示。

    代码方式:

    1. QWidget *window = new QWidget;
    2. QPushButton *button1 = new QPushButton("One");
    3. QPushButton *button2 = new QPushButton("Two");
    4. QVBoxLayout *layout = new QVBoxLayout;
    5. layout->addWidget(button1);
    6. layout->addWidget(button2);
    7. window->setLayout(layout);
    8. window->show();

    2.水平布局

    垂直布局就是将其中的控件按水平方向等间隔排布。如下图所示。

    代码方式:

    1. QWidget *window = new QWidget;
    2. QPushButton *button1 = new QPushButton("One");
    3. QPushButton *button2 = new QPushButton("Two");
    4. QHBoxLayout *layout = new QHBoxLayout;
    5. layout->addWidget(button1);
    6. layout->addWidget(button2);
    7. window->setLayout(layout);
    8. window->show();

    3.栅格布局

    垂直布局就是将其中的控件按栅格对齐。如果控件的位置不处于水平或垂直对齐的方向,则自动按矩阵的方式排布。如下图所示。

    代码方式:

    1. QWidget *window = new QWidget;
    2. QPushButton *button1 = new QPushButton("One");
    3. QPushButton *button2 = new QPushButton("Two");
    4. QGridLayout *layout = new QGridLayout;
    5. layout->addWidget(button1, 0, 0);
    6. layout->addWidget(button2, 1, 1);
    7. window->setLayout(layout);
    8. window->show();

    4.表单布局

    表单布局主要用于Label控件和EditLine控件或其他控件按表格(N*2)的方式进行排布。如下图所示。

    代码方式:

    1. QWidget *window = new QWidget;
    2. QPushButton *button1 = new QPushButton("One");
    3. QPushButton *button2 = new QPushButton("Two");
    4. QLabel *label1 = new QLabel("one:");
    5. QLabel *label2 = new QLabel("two:");
    6. QFormLayout *layout = new QFormLayout;
    7. layout->insertRow(0, label1, button1);
    8. layout->insertRow(1, label2, button2);
    9. window->setLayout(layout);
    10. window->show();

    5.弹簧控件

    弹簧控件配合以上布局可以实现控件随窗口变换自动缩放的效果。如下图的排布可实现窗口拖拽及最大化时控件也随着自动缩放及最大化。

    弹簧控件构造函数

    QSpacerItem(int w, int h, QSizePolicy::Policy hPolicy = QSizePolicy::Minimum, QSizePolicy::Policy vPolicy = QSizePolicy::Minimum)

    代码方式:

    1. QWidget *widget = new QWidget;
    2. QVBoxLayout *layout = new QVBoxLayout(widget);
    3. QPushButton *button = new QPushButton("按钮");
    4. QLineEdit *lineEdit = new QLineEdit;
    5. QSpacerItem *spaceItem = new QSpacerItem(20, 40, QSizePolicy::Expanding, QSizePolicy::Maximum);
    6. layout->addWidget(button);
    7. layout->addItem(spaceItem);
    8. layout->addWidget(lineEdit);
    9. widget->setLayout(layout);
    10. widget->show();

    总结,本文介绍了Qt窗体的布局。

  • 相关阅读:
    基于增强蛇优化算法求解单目标优化问题附matlab代码
    【CSS】笔记4-浮动
    哈佛参考文献注释体系与学术规范
    原生IP如何区分真伪?
    【NSDictionary数组的遍历 Objective-C语言】
    大厂面试题-索引有哪些缺点以及具体有哪些索引类型
    【项目】5.1阻塞和非阻塞、同步和异步 5.2Unix、Linux上的五种IO模型
    补涨龙的底层逻辑和应用
    发行说明 | IvorySQL 3.0 发版
    BL808学习日志-1-三核通讯
  • 原文地址:https://blog.csdn.net/propor/article/details/133961196