QBoxLayout、QGridLayout、QFormLayout

QBoxLayout

QBoxLayout是一种排列的控件,包括有继承它的QHBoxLayout以及QVBoxLayout。QHBoxLayout为水平排列控件而QVBoxLayout则为垂直排列控件。二者在使用方法上几乎相同,仅仅在布局显示上有所区别。
以下则由程序来说明两者的使用方法:


    QPushButton *pbtn1 = new QPushButton(this);
    QPushButton *pbtn2 = new QPushButton(this);
    QPushButton *pbtn3 = new QPushButton(this);//设置三个按钮

    pbtn1 -> setText("button1");
    pbtn2 -> setText("button2");
    pbtn3 -> setText("button3");

    QVBoxLayout *playout = new QVBoxLayout(this);//设置垂直排列
    //QHBoxLayout *playout = new QHBoxLayout(this);//设置水平排列
    playout -> addWidget(pbtn1);//添加控件按钮
    playout -> addWidget(pbtn2);
    playout -> addWidget(pbtn3);

    setLayout(playout);

在这里插入图片描述
在这里插入图片描述
由上述程序以及对应的图则可以看出QBoxLayout中QHBoxLayout以及QVBoxLayout的简单使用方式。即将设置的控件按水平或垂直的方式显示。

QGridLayout

网格布局排列则是可以将一些控件根据需求放置在网格中,将其所处的空间划分成行和列,再将设计的控件放置在设计好的位置。
程序如下:

    QPushButton *btn1 = new QPushButton("btn1",this);
    QPushButton *btn2 = new QPushButton("btn2",this);
    QPushButton *btn3 = new QPushButton("btn3",this);
    QPushButton *btn4 = new QPushButton("btn4",this);
    QPushButton *btn5 = new QPushButton("btn5",this);//按钮控件

    QGridLayout *playout = new QGridLayout(this);//设计网格布局
    playout->addWidget(btn1,0,0,1,1);
    playout->addWidget(btn2,0,1,1,1);
    playout->addWidget(btn3,1,0,1,2);
    playout->addWidget(btn4,2,0);
    playout->addWidget(btn5,3,1);//添加按钮部件以及按钮所处位置。

    playout -> setHorizontalSpacing(10);
    playout -> setVerticalSpacing(10);//设置间距
    playout -> setContentsMargins(10,10,10,10);//设置边距
    setLayout(playout);

上述程序中添加按钮的过程也需要设置按钮部件的位置以及大小,若未定义则按默认设置。如btn3中所设:playout->addWidget(btn3,1,0,1,2);其含义即为添加btn3部件,使其位于第二行第一列,占据一行两列。所呈现出来的图则如下:
在这里插入图片描述

QFormLayout

QFormLayout是可以将标签与输入结合的布局结构。

    QLineEdit *pInput1 = new QLineEdit(this);
    QLineEdit *pInput2 = new QLineEdit(this);
    QLineEdit *pInput3 = new QLineEdit(this);

    QFormLayout *playout = new QFormLayout();
    playout->addRow(("input1:"), pInput1);
    playout->addRow(("input2:"), pInput2);
    playout->addRow(("input3:"), pInput3);

    playout->setSpacing(10);
    setLayout(playout);

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值