QT基础教程(布局管理器)

举报
yd_274589494 发表于 2023/09/24 18:28:13 2023/09/24
【摘要】 @TOC 前言本篇文章我们开始来讲解布局管理器的使用,在界面布局时布局管理器可以说是非常重要的一个存在,有了布局管理器我们就可以让我们的界面变的更加好看。 一、布局管理器介绍布局管理器(Layout Manager)是一种在图形用户界面(GUI)应用程序中用于自动管理和排列窗口部件(Widget)的工具。布局管理器使得窗口部件能够自适应不同的窗口大小或用户界面布局,从而更好地适应不同的屏幕尺...

@TOC


前言

本篇文章我们开始来讲解布局管理器的使用,在界面布局时布局管理器可以说是非常重要的一个存在,有了布局管理器我们就可以让我们的界面变的更加好看。

一、布局管理器介绍

布局管理器(Layout Manager)是一种在图形用户界面(GUI)应用程序中用于自动管理和排列窗口部件(Widget)的工具。布局管理器使得窗口部件能够自适应不同的窗口大小或用户界面布局,从而更好地适应不同的屏幕尺寸和用户需求。

在Qt中,提供了多种布局管理器来帮助开发者方便地组织和管理窗口部件。下面介绍几种常用的布局管理器:

1.QVBoxLayout(垂直布局管理器):垂直布局管理器按照从上到下的顺序依次排列窗口部件。

2.QHBoxLayout(水平布局管理器):水平布局管理器按照从左到右的顺序依次排列窗口部件。

3.QGridLayout(网格布局管理器):网格布局管理器将窗口部件以网格的形式进行排列,可以指定行和列来控制布局。

4.QFormLayout(表单布局管理器):表单布局管理器用于创建标签和输入字段的组合,将它们以一列或两列的形式进行排列。

5.QStackedLayout(堆叠布局管理器):堆叠布局管理器将多个窗口部件按照堆叠的方式进行排列,只显示其中的一个部件,可以通过切换来显示不同的部件。

使用布局管理器的好处是,当窗口大小改变时,布局管理器会自动调整窗口部件的位置和大小,以适应新的大小。这样,开发者无需手动调整每个部件的位置和大小,大大简化了界面设计和窗口调整的工作。

二、QVBoxLayout(垂直布局管理器)

垂直布局管理器按照从上到下的顺序依次排列窗口部件。

使用addWidget()方法向垂直布局管理器中添加窗口部件。

可以使用addStretch()方法添加伸缩项,实现窗口部件的自动填充和对齐。

#include <QApplication>
#include <QWidget>
#include <QVBoxLayout>
#include <QPushButton>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    QWidget window;
    window.setWindowTitle("Vertical Layout Example");

    QVBoxLayout layout;

    QPushButton *button1 = new QPushButton("Button 1");
    QPushButton *button2 = new QPushButton("Button 2");
    QPushButton *button3 = new QPushButton("Button 3");

    layout.addWidget(button1);
    layout.addWidget(button2);
    layout.addWidget(button3);

    window.setLayout(&layout);

    window.show();

    return app.exec();
}

三、QHBoxLayout(水平布局管理器)

水平布局管理器按照从左到右的顺序依次排列窗口部件。

使用addWidget()方法向水平布局管理器中添加窗口部件。

可以使用addStretch()方法添加伸缩项,实现窗口部件的自动填充和对齐。

#include <QApplication>
#include <QWidget>
#include <QHBoxLayout>
#include <QPushButton>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    QWidget window;
    window.setWindowTitle("Horizontal Layout Example");

    QHBoxLayout layout;

    QPushButton *button1 = new QPushButton("Button 1");
    QPushButton *button2 = new QPushButton("Button 2");
    QPushButton *button3 = new QPushButton("Button 3");

    layout.addWidget(button1);
    layout.addWidget(button2);
    layout.addWidget(button3);

    window.setLayout(&layout);

    window.show();

    return app.exec();
}

四、QGridLayout(网格布局管理器)

网格布局管理器将窗口部件以网格的形式进行排列,可以指定行和列来控制布局。

使用addWidget()方法向网格布局管理器中添加窗口部件,并指定其所在的行和列。

可以使用setRowStretch()和setColumnStretch()方法设置行和列的伸缩比例。

#include <QApplication>
#include <QWidget>
#include <QGridLayout>
#include <QPushButton>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    QWidget window;
    window.setWindowTitle("Grid Layout Example");

    QGridLayout layout;

    QPushButton *button1 = new QPushButton("Button 1");
    QPushButton *button2 = new QPushButton("Button 2");
    QPushButton *button3 = new QPushButton("Button 3");

    layout.addWidget(button1, 0, 0);
    layout.addWidget(button2, 0, 1);
    layout.addWidget(button3, 1, 0);

    window.setLayout(&layout);

    window.show();

    return app.exec();
}

五、QFormLayout(表单布局管理器)

表单布局管理器用于创建标签和输入字段的组合,将它们以一列或两列的形式进行排列。

使用addRow()方法向表单布局管理器中添加标签和输入字段。

可以使用setLabelAlignment()方法设置标签的对齐方式。

#include <QApplication>
#include <QWidget>
#include <QFormLayout>
#include <QLabel>
#include <QLineEdit>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    QWidget window;
    window.setWindowTitle("Form Layout Example");

    QFormLayout layout;

    QLabel *label1 = new QLabel("Label 1");
    QLineEdit *lineEdit1 = new QLineEdit();

    QLabel *label2 = new QLabel("Label 2");
    QLineEdit *lineEdit2 = new QLineEdit();

    layout.addRow(label1, lineEdit1);
    layout.addRow(label2, lineEdit2);

    window.setLayout(&layout);

    window.show();

    return app.exec();
}

六、QStackedLayout(堆叠布局管理器)

堆叠布局管理器将多个窗口部件按照堆叠的方式进行排列,只显示其中的一个部件。

使用addWidget()方法向堆叠布局管理器中添加窗口部件。

使用setCurrentIndex()方法设置当前显示的部件索引。

#include <QApplication>
#include <QWidget>
#include <QStackedLayout>
#include <QPushButton>
#include <QLabel>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    QWidget window;
    window.setWindowTitle("Stacked Layout Example");

    QStackedLayout layout;

    QPushButton *button1 = new QPushButton("Button 1");
    QLabel *label1 = new QLabel("Label 1");

    QPushButton *button2 = new QPushButton("Button 2");
    QLabel *label2 = new QLabel("Label 2");

    layout.addWidget(button1);
    layout.addWidget(label1);
    layout.addWidget(button2);
    layout.addWidget(label2);

    layout.setCurrentIndex(0); // 设置初始显示的部件

    window.setLayout(&layout);

    window.show();

    return app.exec();
}

总结

以上是五种常用的布局管理器的介绍和相应的代码示例。你可以根据实际需求选择合适的布局管理器,并使用Qt的布局系统来管理和排列窗口部件,以创建具有良好自适应性的用户界面。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。