第24课 布局管理器(三)

1、如何实现下面的用户界面

            
    1.1、 解决方法
        1.1.1、 绝对定位组件的坐标和大小
        1.1.2、 嵌套QBoxLayout(三个水平布局,一个垂直布局)
        1.1.3、 创建3x2的QGridLayout
          

//        首先用GridLayout来实现上面的布局
.cpp文件

#include "widget.h"
#include <QGridLayout>
#include <QLineEdit>
#include <QLabel>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    QLabel* Name_Label = new QLabel("Name: ");
    QLabel* Email_Label = new QLabel("Email: ");
    QLabel* Address_Label = new QLabel("Address: ");
    QLineEdit* Name_edit = new QLineEdit();
    QLineEdit* Email_edit = new QLineEdit();
    QLineEdit* Address_edit = new QLineEdit();
    QGridLayout* gridlayout = new QGridLayout();
    gridlayout->setSpacing(10);//布局中每个控件间隔10
    gridlayout->addWidget(Name_Label, 0, 0);//这个控件在第0行0列。
    gridlayout->addWidget(Email_Label, 1, 0);
    gridlayout->addWidget(Address_Label, 2, 0);
    gridlayout->addWidget(Name_edit, 0, 1);//利用这个网格布局将界面分成3行2列。
    gridlayout->addWidget(Email_edit, 1, 1);
    gridlayout->addWidget(Address_edit, 2, 1);

     //gridlayout->setColumnStretch(0, 1);//第0列和第1列按照 1:4的比例。
   // gridlayout->setColumnStretch(1, 4);

    this->setLayout(gridlayout);
    this->setWindowTitle("FTP");
}
Widget::~Widget()
{
    
}


2、QFormLayout布局管理器((http://blog.csdn.net/liang19890820/article/details/51539339))

    2.1、 表单(Form)的方式管理界面组件
    2.2、 表单布局中的标签和组件相互对应的关系
                
    2.3、 QFormLayout的用法概要
                

    2.4、 QFormLayout的样式函数

    2.5、 表单布局支持嵌套其它布局管理器可以作为子布局被其管理

.cpp实现文件。


#include "widget.h"
#include <QFormLayout>
#include <QLineEdit>
#include <QLabel>
Widget::Widget(QWidget *parent)
    : QWidget(parent, Qt::WindowCloseButtonHint)
{
    QLineEdit* Name_edit = new QLineEdit();
    QLineEdit* Email_edit = new QLineEdit();
    QLineEdit* Address_edit = new QLineEdit();
    QFormLayout* formlayout = new QFormLayout();
    formlayout->setSpacing(10);//设置这个布局中组件间隔为10
    formlayout->addRow("Name: ", Name_edit);//第一个参数就是一个文本标签,第二个参数是一个组件
    formlayout->addRow("Email: ", Email_edit);//2行
    formlayout->addRow("Address: ", Address_edit);//3行
    //formlayout->setLabelAlignment(Qt::AlignRight);//Label控件右对齐。
    //formlayout->setRowWrapPolicy(QFormLayout::WrapAllRows);//设置样式。分为两行,字段放在标签的下面。
    formlayout->setRowWrapPolicy(QFormLayout::WrapLongRows);
    this->setLayout(formlayout);
    this->setWindowTitle("FTP");
}
Widget::~Widget()
{
}


3、小结

    3.1、 QFormLayout以表单的方式管理界面组件
    3.2、 QFormLayout的样式设置简洁明了
    3.3、 QFormLayout支持布局管理器的相互嵌套
    3.4、 QFormLayout是嵌入式产品中最常用的布局方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值