• 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窗体的布局。

  • 相关阅读:
    使用OLED透明广告屏,涉及到的附加费用
    php面试常问面试题
    Qi标准无线供电模块如何处理噪声抑制语音通讯接收灵敏度
    第二十二次CCF计算机软件能力认证
    【训练方法】OHEM
    vue-cropper在ie11下选择本地图片后,无显示、拒绝访问的问题
    大学生如何免费认证,下载,安装MATLAB
    算法实战:亲自写红黑树之三 算法详解
    [PostgreSql]生产级别数据库安装要考虑哪些问题?
    Spring Boot Security 角色授权示例
  • 原文地址:https://blog.csdn.net/propor/article/details/133961196