qt界面布局之水平布局与垂直布局(QHBoxLayout, QVBoxLayout)

这篇具有很好参考价值的文章主要介绍了qt界面布局之水平布局与垂直布局(QHBoxLayout, QVBoxLayout)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

QHBoxLayout 提供了一些方法,下面简单介绍一下常用方法
QVBoxLayout与QHBoxLayout使用类似,这里就不贴QVBoxLayout的代码了

addWidget 添加一个控件到layout

void addWidget(QWidget *, int stretch = 0, Qt::Alignment alignment = Qt::Alignment());
第一个参数可以传入一个QWidget的派生类指针类型(可以理解是待加入的控件地址)
第二个参数传入一个整型,这个整型是用来描述该控件在整个水平布局中所占比大小。
下面代码演示如何使用

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent)//, ui(new Ui::Widget)
{
    //ui->setupUi(this);

    //创建水平布局类
    Hlayout = new QHBoxLayout;

    //创建两个按钮方便观察
    btn1 = new QPushButton;
    btn1->setText("我是按钮1");

    btn2 = new QPushButton;
    btn2->setText("我是按钮2");

    //将按钮添加到界面布局
    Hlayout->addWidget(btn1);
    Hlayout->addWidget(btn2);

    //将当前窗口应用该布局
    this->setLayout(Hlayout);
}

Widget::~Widget()
{
    //delete ui;
    delete Hlayout;
    delete btn1;
    delete btn2;
}

#ifndef WIDGET_H
#define WIDGET_H

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

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private:
    Ui::Widget *ui;
    QHBoxLayout *Hlayout;
    QPushButton *btn1;
    QPushButton *btn2;
};

#endif // WIDGET_H

qt界面布局之水平布局与垂直布局(QHBoxLayout, QVBoxLayout)

我创建了两个按钮和一个水平布局,先看一下不加第二个参数的情况,他会默认为0,这时会按照相同比例来计算,如果想设置每个控件的占比,就需要将上面代码中的addwidget函数参数更改成这样

    Hlayout->addWidget(btn1, 5);
    Hlayout->addWidget(btn2, 1);

下面看代码和效果
qt界面布局之水平布局与垂直布局(QHBoxLayout, QVBoxLayout)

addLayout 添加一个布局到layout

void addLayout(QLayout *layout, int stretch = 0);
第一个参数要传入待添加的布局
第二个参数和上面一样是该布局占比
如何使用看下面代码

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent)//, ui(new Ui::Widget)
{
    //ui->setupUi(this);

    //总布局
    mainlayout = new QHBoxLayout;

    //创建水平布局类
    Hlayout = new QHBoxLayout;

    //创建两个按钮方便观察
    btn1 = new QPushButton;
    btn1->setText("我是按钮1");

    btn2 = new QPushButton;
    btn2->setText("我是按钮2");

    //创建第三个按钮
    btn3 = new QPushButton;
    btn3->setText("我是按钮3");

    //将按钮添加到界面布局
    Hlayout->addWidget(btn1, 5);
    Hlayout->addWidget(btn2, 1);

    //添加布局和控件到主布局中
    mainlayout->addLayout(Hlayout, 2);
    mainlayout->addWidget(btn3, 5);


    //将当前窗口应用该布局
    this->setLayout(mainlayout);
}

Widget::~Widget()
{
    //delete ui;
    delete mainlayout;
    delete Hlayout;
    delete btn1;
    delete btn2;
    delete btn3;
}

#ifndef WIDGET_H
#define WIDGET_H

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

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private:
    Ui::Widget *ui;
    QHBoxLayout *Hlayout;
    QHBoxLayout *mainlayout;
    QPushButton *btn1;
    QPushButton *btn2;
    QPushButton *btn3;
};

#endif // WIDGET_H

qt界面布局之水平布局与垂直布局(QHBoxLayout, QVBoxLayout)

可以看到布局和按钮都可以按照比例去添加到主布局中
但是图片中所有控件之间有一些小间隙,我想控制这些小间隙
qt界面布局之水平布局与垂直布局(QHBoxLayout, QVBoxLayout)

setSpacing 设置layout中每个控件的间隙

void setSpacing(int spacing);
第一个参数是设置空隙的大小(单位像素)
setSpacing是设置控件与控件间隙

setContentsMargins 设置layout中每个控件与layout边框之间距离

void setContentsMargins(int left, int top, int right, int bottom);
这四个参数分别是该布局内控件距离布局的边缘间距,分别是上下左右边框(是控件距离布局的边缘的间距)
setContentsMargins是设置控件与布局边框的间隙

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent)//, ui(new Ui::Widget)
{
    //ui->setupUi(this);

    //创建水平布局类
    Hlayout = new QHBoxLayout;

    //创建两个按钮方便观察
    btn1 = new QPushButton;
    btn1->setText("我是按钮1");

    btn2 = new QPushButton;
    btn2->setText("我是按钮2");

    //将按钮添加到界面布局
    Hlayout->addWidget(btn1, 5);
    Hlayout->addWidget(btn2, 1);
    Hlayout->setSpacing(0);
    Hlayout->setContentsMargins(0, 0, 0, 0);

    //将当前窗口应用该布局
    this->setLayout(Hlayout);
}

Widget::~Widget()
{
    //delete ui;
    delete Hlayout;
    delete btn1;
    delete btn2;
}

#ifndef WIDGET_H
#define WIDGET_H

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

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private:
    Ui::Widget *ui;
    QHBoxLayout *Hlayout;
    QPushButton *btn1;
    QPushButton *btn2;
};

#endif // WIDGET_H

qt界面布局之水平布局与垂直布局(QHBoxLayout, QVBoxLayout)

addStretch 添加一个弹簧到layout中

void addStretch(int stretch = 0);
第一个参数是添加弹簧在控件中的占比
addStretch主要作用是添加一个弹簧到布局内,这个弹簧是可以控制的
只需要在上面代码加入这行代码
qt界面布局之水平布局与垂直布局(QHBoxLayout, QVBoxLayout)
加入后可以看到
qt界面布局之水平布局与垂直布局(QHBoxLayout, QVBoxLayout)文章来源地址https://www.toymoban.com/news/detail-491616.html

到了这里,关于qt界面布局之水平布局与垂直布局(QHBoxLayout, QVBoxLayout)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序布局图片上面显示文字以及文字水平垂直居中

     博主介绍: 本人专注于Android/java/数据库/微信小程序技术领域的开发,以及有好几年的计算机毕业设计方面的实战开发经验和技术积累;尤其是在安卓(Android)的app的开发和微信小程序的开发,很是熟悉和了解;本人也是多年的Android开发人员;希望我发布的此篇文件可以帮

    2024年02月14日
    浏览(48)
  • 微信小程序-flex布局:垂直、水平方向-自动填充满剩余空间

    在微信小程序项目中经常需要将水平或垂直方向分成两大部分,一部分内容宽度或高度固定,剩余的一部分需填充满剩余空间。那么,该怎么快速解决这类布局? 效果图如下: 垂直方向 : 水平方向: 我个人比较喜欢使用flex布局,面对此类布局,最先想到的也是flex布局。常

    2024年02月09日
    浏览(49)
  • qt学习:进度条,水平滑动条,垂直滑动条+rgb调试实战

    目录 水平滑动条,垂直滑动条 常用信号 进度条 常用信号  修改进度条 例子  rgb调色 配置ui界面 编写3个进度条的事件函数 添加链表容器和按钮索引 在.h里的类定义 初始化链表容器和按钮索引 编写添加颜色的按钮点击事件函数 效果 valueChanged(int)  数值变化的时候 sliderMov

    2024年01月20日
    浏览(44)
  • BootStrap table 左侧固定列,表头固定 垂直滚动条,水平滚动条展示在可视化界面

    例如:  不管垂直滚动条怎么滚动  ( 蓝色表头 )表头始终在不动; 列数过多时除了左侧固定的列  其他列通过水平滚动条进行滚动; 加入height  固定表头 上下滚动表头一直在最上方 效果:  大功告成!!!

    2024年02月06日
    浏览(48)
  • 『PyQt5-Qt Designer篇』| 06 Qt Designer中水平布局和垂直布局的使用

    拖动几个按钮: 选中这几个按钮, 右键-布局-水平布局 : 可以看到按钮间隔等宽水平排列:

    2024年02月10日
    浏览(45)
  • flex布局——align-items属性垂直之共有flex-start、center、flex-end& justify-content属性水平之space-around、space-between

    flex布局——align-items属性垂直之共有flex-start、center、flex-end justify-content属性水平之space-around、space-between 对容器进行display: flex布局之后,可通过justify-content来调整容器中子元素整体的布局的位置,其值分别有如下几个: 注:以下情况均由主轴为从左到右方向进行,其从下到

    2024年01月19日
    浏览(42)
  • qt登录界面布局

    qt个人小笔记 1、主体布局 其中用户名和密码都是label标签: 用户名和密码后面的输入框都是linedit标签: 下方的登录和退出按钮都是push button标签: 2、水平操作: 将这些东西添加完成以后,要保证用户名与后面的数入框水平,密码与后面的输入框水平,登录和推出按钮水平

    2024年02月03日
    浏览(39)
  • QT界面布局和设计

    2024年02月12日
    浏览(47)
  • 嵌入式 QT 界面布局管理

    目录 1、实例程序功能 2、界面组件布局 2.1 界面组件的层次关系 2.2 布局管理 2.3 伙伴关系和Tab顺序       创建一个 Widget Application 项目 samp2_2, 在创建窗体时选择基类 QDialog ,生成的类命名为 QWDialog ,并选择生成窗体。     如 此 新建 的项 目 samp2_2 有一 个界 面文 件 qwdi

    2024年02月04日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包