当前位置:首页 > 技术文章 > 正文内容

C++Qt 垂直布局 (QVBoxLayout)(qt怎么布局)

zonemu15小时前技术文章2

QVBoxLayout:在垂直的方向上排列控件 上下排列

    QVBoxLayout* pLayout = new QVBoxLayout();//水平布局

    QPushButton* p1 = new QPushButton("p1");
    QPushButton* p2 = new QPushButton("p2");
    QPushButton* p3 = new QPushButton("p3");
    QPushButton* p4 = new QPushButton("p4");


    pLayout->addWidget(p1);

    pLayout->addWidget(p2);

    pLayout->addWidget(p3);

    pLayout->addWidget(p4);


    this->setLayout(pLayout);

常用的接口:

addStretch();//添加一个可伸缩空间

addSpacing(int size);//添加一个固定size 大小的间距

setMargin(int);//setMargin可以设置左、上、右、下的外边距,设置之后,他们的外边距是相同的

//与setMargin功能相同,但是可以将左、上、右、下的外边距设置为不同的值
setContentsMargins(int left, int top, int right, int bottom );

setContentsMargins(const QMargins &margins); 设置外边距

addWidget(QWidget *, int stretch = 0, Qt::Alignment alignment = 0) //添加控件
默认的,我们添加控件至水平布局中,默认都是垂直方向居中对齐的。

setDirection(QBoxLayout::RightToLeft)//设置布局方向

setStretchFactor(QWidget *w, int stretch);//设置控件、布局的拉伸系数
setStretchFactor(QLayout *l, int stretch);

增加一个可伸缩空间:

    this->setWindowTitle("垂直布局(QVBoxLayout)");
    QVBoxLayout* pLayout = new QVBoxLayout();//水平布局

    QPushButton* p1 = new QPushButton("p1");
    QPushButton* p2 = new QPushButton("p2");
    QPushButton* p3 = new QPushButton("p3");
    QPushButton* p4 = new QPushButton("p4");

    pLayout->addStretch();

    pLayout->addWidget(p1);

    pLayout->addWidget(p2);

    pLayout->addWidget(p3);

    pLayout->addWidget(p4);


    this->setLayout(pLayout);

上边就相当于有一个弹簧顶着 , 你窗口变高 他的弹簧就会拉伸

设置间距:

    QVBoxLayout* pLayout = new QVBoxLayout();//水平布局

    QPushButton* p1 = new QPushButton("p1");
    QPushButton* p2 = new QPushButton("p2");
    QPushButton* p3 = new QPushButton("p3");
    QPushButton* p4 = new QPushButton("p4");

    pLayout->setSpacing(150);

    pLayout->addWidget(p1);

    pLayout->addWidget(p2);

    pLayout->addWidget(p3);

    pLayout->addWidget(p4);


    this->setLayout(pLayout);

增加间距:

    QVBoxLayout* pLayout = new QVBoxLayout();//水平布局

    QPushButton* p1 = new QPushButton("p1");
    QPushButton* p2 = new QPushButton("p2");
    QPushButton* p3 = new QPushButton("p3");
    QPushButton* p4 = new QPushButton("p4");

    pLayout->addStretch(50);

    pLayout->addWidget(p1);

    pLayout->addWidget(p2);

    pLayout->addStretch(150);

    pLayout->addWidget(p3);

    pLayout->addStretch(10);

    pLayout->addWidget(p4);

    this->setLayout(pLayout);

如果要控件之间的间距相同用设置间距就可以,增加间距是做控件之间间距不一样效果

设置对齐方式:

    QVBoxLayout* pLayout = new QVBoxLayout();//水平布局

    QPushButton* p1 = new QPushButton("p1");
    QPushButton* p2 = new QPushButton("p2");
    QPushButton* p3 = new QPushButton("p3");
    QPushButton* p4 = new QPushButton("p4");

    //水平居左,垂直居上
    pLayout->addWidget(p1,0,Qt::AlignLeft | Qt::AlignTop);
    //居右,居下
    pLayout->addWidget(p2,0,Qt::AlignRight | Qt::AlignBottom);
    //居中
    pLayout->addWidget(p3,0,Qt::AlignCenter );

    pLayout->addWidget(p4);

设置方向:

    QVBoxLayout* pLayout = new QVBoxLayout();//水平布局

    QPushButton* p1 = new QPushButton("p1");
    QPushButton* p2 = new QPushButton("p2");
    QPushButton* p3 = new QPushButton("p3");
    QPushButton* p4 = new QPushButton("p4");

    pLayout->addWidget(p1);

    pLayout->addWidget(p2);

    pLayout->addWidget(p3);

    pLayout->addWidget(p4);

    pLayout->setDirection(QBoxLayout::BottomToTop);//自下而上
    this->setLayout(pLayout);

相关文章

Vue3 中,父子组件如何传递参数?(vue父子组件传递数据方法)

在 Vue3 中,组件化开发是非常重要的特征,那么组件之间传值就是开发中常见的需求了。组件之间的传值三种方式:父传子、子传父、非父子组件传值。一、父传子( defineProps )父组件主要通过使用...

「 VUE3 + TS + Vite 」父子组件间如何通信?

组件之间传值,大家都很熟悉,涉及到 VUE3 +TS 好多同学就无从下手了,所以分享这篇文章,希望看完后提起 VUE3+TS 能够不慌不忙。平时使用的函数如:ref、reactive、watch、co...

react hooks自定义组件居然能这样做

前言  这里写一下如何封装可复用组件。首先技术栈 react hooks + props-type + jsx封装纯函数组件。类组件和typeScript在这不做讨论,大家别白跑一趟。接下来会说一下封...

用IDEA开发如何用Git快速拉取指定分支代码?

1,准备空的文件夹,git init2,关联远程仓库,git remote add origin gitlab地址3,拉取远程分支代码,git pull origin 远程分支名再用IDEA打开项目即...

迁移GIT仓库并带有历史提交记录(git 迁移仓库)

迁移git仓库开发在很多时候,会遇到一个问题。GIT仓库的管理,特别是仓库的迁移。我需要保留已有的历史记录,而不是重新开发,重头再来。我们可以这样做:使用--mirror模式会把本地的分支都克隆。//...

傻瓜式DEVOPS实践手册——Gitlab部署

GitLab是一款开放源代码的DevOps平台,用于实现从项目规划、源代码管理、CI/CD到监控和安全性的全方位集成。GitLab主要用于版本控制、协同开发、持续集成/持续部署 (CI/CD)、自动化...