Qt布局管理器(QHBoxLayout,QVBoxLayout)

简介: Qt布局管理器(QHBoxLayout,QVBoxLayout)

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

布局管理器是什么

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

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

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

使用代码添加布局管理器

QVBoxLayout

e3bcd39101794b00bbbebb980906e5ad.png

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 <QWidget>
#include <QPushButton>
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

c736ee72dd6a4786bbb829799582e6f0.png

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

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

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

28ba2b879af142c8a66c1209d4e7d84d.png

90fbe39c561545a1b2b93a23ffc32000.png2、点击按钮,排序某个Widget

先添加组件

首先选中你要排序的Widget

然后点击下面的东西:

547a3a8bca5e40debdab8a59ccc9e3df.png


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

布局管理器的嵌套


c5f449b477db4bae9e48b040aa9e66ba.png

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

代码如下:

//Widget,h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QPushButton>
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 <QVBoxLayout>
#include <QHBoxLayout>
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;
}


效果如下:


865445937be24788b335907864b9d010.png


相关文章
|
3月前
【qt】 QGridLayout布局管理器怎么用?
【qt】 QGridLayout布局管理器怎么用?
124 0
|
3月前
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 空白项Spacer
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 空白项Spacer
131 2
|
3月前
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 表单布局Form Layout
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 表单布局Form Layout
69 2
|
3月前
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 网格布局Grid Layout
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 网格布局Grid Layout
291 2
|
3月前
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 水平布局Horizontal Layout
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 水平布局Horizontal Layout
185 2
|
3月前
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 垂直布局Vertical Layout
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 垂直布局Vertical Layout
255 2
|
5月前
|
数据安全/隐私保护
Qt布局(登录窗口实现)
Qt布局(登录窗口实现)
|
4月前
|
数据安全/隐私保护 C++ 计算机视觉
Qt(C++)开发一款图片防盗用水印制作小工具
文本水印是一种常用的防盗用手段,可以将文本信息嵌入到图片、视频等文件中,用于识别和证明文件的版权归属。在数字化和网络化的时代,大量的原创作品容易被不法分子盗用或侵犯版权,因此加入文本水印成为了保护原创作品和维护知识产权的必要手段。 通常情况下,文本水印可以包含版权声明、制作者姓名、日期、网址等信息,以帮助识别文件的来源和版权归属。同时,为了增强防盗用效果,文本水印通常会采用字体、颜色、角度等多种组合方式,使得水印难以被删除或篡改,有效地降低了盗用意愿和风险。 开发人员可以使用图像处理技术和编程语言实现文本水印的功能,例如使用Qt的QPainter类进行文本绘制操作,将文本信息嵌入到图片中,
176 1
Qt(C++)开发一款图片防盗用水印制作小工具
|
3月前
|
监控 C++ 容器
【qt】MDI多文档界面开发
【qt】MDI多文档界面开发
82 0
下一篇
无影云桌面