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

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

zonemu2个月前 (07-18)技术文章17

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);

相关文章

费用报销单填写及粘贴全攻略:避免常见错误!附费用报销管理系统

费用报销单是企业日常财务管理中的重要工具,用于记录和核销员工在工作中产生的各类费用。填写准确的费用报销单不仅能够保证财务报销流程的顺利进行,还能提高工作效率,确保公司资金的合理使用。在填写报销单时,员...

「图解」父子组件通过 props 进行数据交互的方法

1.组件化开发,经常有这样的一个场景,就是父组件通过 Ajax 获取数据,传递给子组件,如何通过 props 进行数据交互来实现,便是本图解的重点。2.代码的结构3.具体代码 ①在父组件 data 中...

vue:组件中之间的传值(vue组件之间传参)

一、父子组件之间的传值----props/$emit1、父组件向子组件传值--props2.子组件想父组件传值-this.$emit('select',item)二、父组件向下(深层)...

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

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

Gitlab 的使用和代码审查流程介绍

1、先简洁介绍下项目常用的信息-面板统计页面2、用户信息面板3、服务器信息4、项目信息5、重点介绍代码提交审核机制和授权合并机制开发人员推送代码的时候不能直接推送到master,否则就会报错。此时开发...

在 Spring Boot3 中操作 GitLab API 的全面指南

在当今互联网大厂的后端开发工作中,高效管理代码版本和项目协作至关重要。GitLab 作为强大的版本控制系统,其 API 为开发人员提供了丰富的操作可能性。本文将深入探讨如何在 Spring Boot3...