Qt 垂直布局 (QVBoxLayout)

Qt 垂直布局 (QVBoxLayout)Qt垂直布局(QVBoxLayout)上一节说了水平布局:https://blog.csdn.net/weixin_42837024/article/details/82114258QVBoxLayout:在垂直的方向上排列控件上下排列QVBoxLayout*pLayout=newQVBoxLayout();//水平布局QPushButton*p…

大家好,又见面了,我是你们的朋友全栈君。

Qt 垂直布局 (QVBoxLayout)

上一节说了水平布局:https://blog.csdn.net/weixin_42837024/article/details/82114258

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

这里写图片描述

    98年菜鸡一枚,请大佬们多多关照!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/147697.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • javacv学习之实现matlab中imfill算法(孔洞填充)

    javacv学习之实现matlab中imfill算法(孔洞填充)因生产需要计算图像的面积,首先第一步就是要先将图像中有洞的地方给它填上,网上找了半天说是matlab中的imfill算法就能直接填上,但我对matlab也不熟也不想用它,结果网上搜资料看看到很多C++的博主写的可以直接用opencv搞定,我一想opencv能搞定那肯定javacv也能搞,所以就有了下面的内容。废话不多说直接上代码publicstaticvoidmain(String[]args){System.loadLibrary(Core.NATIVE_LIBRAR

  • HTML5 新特性_CSS3新特性

    HTML5 新特性_CSS3新特性一.HTML5概念:1.什么是HTML5:(1)HTML5将成为HTML、XHTML以及HTMLDOM的新标准;(2)HTML5仍处于完善之中。然而,大部分现代浏览器已经具备了某些HTML5支持。2.HTML5的起步:(1)HTML5是W3C(WorldWideWebConsortium,万维网联盟)与WHATWG合作的结果(2)为HTML5建立的…

    2022年10月31日
  • Integer和String转换[通俗易懂]

    Integer和String转换[通俗易懂]Integer和String相互转换//1、String转IntegerIntegervalue=Integer.parseInt(s);//2、int转StringString.valueOf(value);//Integer.toString(i)Integer.toString(value);//3、Integer转StringString.val…

    2022年10月28日
  • 图像处理的Dither和Banding「建议收藏」

    图像处理的Dither和Banding「建议收藏」由于前面的文章涉及到了这两个概念,而我又对图像处理一窍不通,所以专门写一篇文章来了解这两个概念。Colourbanding       banding是计算机图形中颜色表现不精确的一个问题。DitherDither(抖动)是一种故意造成的噪音用以随机化量化误差,阻止大幅度拉升图像时导致的像banding(色带)这样的问题.Dither概念常用在

    2022年10月13日
  • es6字符串的方法_es6模板字符串

    es6字符串的方法_es6模板字符串       模板字符串(templatestring)也就是模板字面量,是增强版的字符串,用反引号(`)来表示。它既可以当作普通字符串来使用,也可以在字符串中嵌套变量。注意:在模板字符串中嵌入变量的时候,需要将变量名写在${}中。       传统…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号