Qt布局管理器(QHBoxLayout,QVBoxLayout)

Qt布局管理器(QHBoxLayout,QVBoxLayout)

Qt布局管理器(QHBoxLayout,QVBoxLayout)

举报

人才程序员

发表于 2023/11/30 17:54:56

2023/11/30

【摘要】 @TOC提示:以下是本篇文章正文内容,下面案例可供参考 布局管理器是什么可以把一些组件按一定的次序排列,这就是布局管理器。他可以自动排列窗口中的界面组件窗口变化后自动更新界面组件。 使用代码添加布局管理器 QVBoxLayoutQVBoxLayout:按垂直的顺序排列组件添加组件/其他的布局管理器:addWidget(QWidget*);addLayout(Layout*);设置布局管理器管...

@TOC

提示:以下是本篇文章正文内容,下面案例可供参考

布局管理器是什么

可以把一些组件按一定的次序排列,这就是布局管理器。

他可以自动排列窗口中的界面组件

窗口变化后自动更新界面组件。

使用代码添加布局管理器

QVBoxLayout

QVBoxLayout:按垂直的顺序排列组件

添加组件/其他的布局管理器:

addWidget(QWidget*);

addLayout(Layout*);

设置布局管理器管理指定窗口:

Widget->setLayout(Layout*);

设置组件和窗口一起变大变小:

QWidget->setSizePolicy();

大家可以查帮助文档,我现在列出一部分

QSizePolicy::Fixed

QSizePolicy::Minimum

QSizePolicy::Maximum

QSizePolicy::Preferred

QSizePolicy::Expanding

设置组件的间隔:

setSpacing(int)

设置组件的比例因子:

setStretch(int index,int stretch)

使用部分:

//构造函数:

Form::Form(QWidget *parent) :

QWidget(parent),btn0(this),btn1(this),btn2(this),

ui(new Ui::Form)

{

ui->setupUi(this);

QVBoxLayout *layout = new QVBoxLayout(this);

btn0.setText("Button 0");

btn1.setText("Button 1");

btn2.setText("Button 2");

btn0.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);

btn1.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);

btn2.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);

layout->setSpacing(10);

layout->addWidget(&btn0);

layout->addWidget(&btn1);

layout->addWidget(&btn2);

setLayout(layout);

}

//头文件:

#ifndef FORM_H

#define FORM_H

#include

#include

namespace Ui {

class Form;

}

class Form : public QWidget

{

Q_OBJECT

QPushButton btn0;

QPushButton btn1;

QPushButton btn2;

public:

explicit Form(QWidget *parent = 0);

~Form();

private:

Ui::Form *ui;

private slots:

};

#endif // FORM_H

QHBoxLayout

他和QVBoxLayout基本一致,在这我就不讲了

使用ui文件添加布局管理器

1、把下列的组件拖出,把组件放在里面

2、点击按钮,排序某个Widget

先添加组件

首先选中你要排序的Widget

然后点击下面的东西:

想要不用也是很简单,选中指定的Widget,点击打破布局。

布局管理器的嵌套

把QHbox放到QVbox中,组成一个网格布局。

代码如下:

//Widget,h

#ifndef WIDGET_H

#define WIDGET_H

#include

#include

namespace Ui {

class Widget;

}

class Widget : public QWidget

{

Q_OBJECT

QPushButton btn0;

QPushButton btn1;

QPushButton btn2;

QPushButton btn3;

public:

explicit Widget(QWidget *parent = 0);

~Widget();

private:

Ui::Widget *ui;

};

#endif // WIDGET_H

//Widget.cpp

#include "widget.h"

#include "ui_widget.h"

#include

#include

Widget::Widget(QWidget *parent) :

QWidget(parent),

ui(new Ui::Widget)

{

ui->setupUi(this);

QVBoxLayout *layout = new QVBoxLayout(this);

QHBoxLayout *hbox1 = new QHBoxLayout(this);

QHBoxLayout *hbox2 = new QHBoxLayout(this);

btn0.setText("Button 0");

btn1.setText("Button 1");

btn2.setText("Button 2");

btn3.setText("Button 3");

btn0.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);

btn1.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);

btn2.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);

btn3.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);

layout->addLayout(hbox1);

layout->addLayout(hbox2);

hbox1->addWidget(&btn0);

hbox1->addWidget(&btn1);

hbox2->addWidget(&btn2);

hbox2->addWidget(&btn3);

setLayout(layout);

}

Widget::~Widget()

{

delete ui;

}

效果如下:

推荐

华为开发者空间发布

让每位开发者拥有一台云主机

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:

cloudbbs@huaweicloud.com

Qt

点赞

收藏

关注作者