第二十四课、布局管理器(三)------------------狄泰软件学院

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

1、解决方法

(1)、绝对定位组件的坐标和大小

(2)、嵌套QBoxLayout

(3)、创建3x2的QGridLayout

 Widget .h

#ifndef WIDGET_H
#define WIDGET_H

#include <QtGui/QWidget>

class Widget : public QWidget
{
    Q_OBJECT
public:
    Widget(QWidget *parent = 0);
    ~Widget();
};

#endif // WIDGET_H

Widget.h

 Widget.cpp

#include "Widget.h"
#include <QLabel>
#include <QLineEdit>
#include <QGridLayout>

Widget::Widget(QWidget *parent)
    : QWidget(parent, Qt::WindowCloseButtonHint)
{
    QLabel* Name  = new QLabel("Name: ");
    QLabel* Email  = new QLabel("Email: ");
    QLabel* Address  = new QLabel("Address: ");

    QLineEdit*  NameEdit = new QLineEdit();
    QLineEdit*  EmailEdit = new QLineEdit();
    QLineEdit*  AddressEdit = new QLineEdit();

    QGridLayout* layout = new QGridLayout();

    layout->addWidget(Name, 0, 0);
    layout->addWidget(Email, 1, 0);
    layout->addWidget(Address, 2, 0);
    layout->addWidget(NameEdit, 0, 1);
    layout->addWidget(EmailEdit, 1, 1);
    layout->addWidget(AddressEdit, 2, 1);

    layout->setSpacing(10);

    setLayout(layout);

}

Widget::~Widget()
{

}

Widget.cpp

 main.cpp

#include <QtGui/QApplication>
#include "Widget.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    
    return a.exec();
}

main.cpp

二、QFormLayout布局管理器

1、以表单(Form)的方式管理界面组件

2、表单布局中的标签和组件是相互对应的关系

3、QFormLayout的用法概要

4、QFormLayout的样式函数

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

 Widget .h

#ifndef WIDGET_H
#define WIDGET_H

#include <QtGui/QWidget>

class Widget : public QWidget
{
    Q_OBJECT
public:
    Widget(QWidget *parent = 0);
    ~Widget();
};

#endif // WIDGET_H

Widget .h

 Widget.cpp

#include "Widget.h"
#include <QLabel>
#include <QLineEdit>
#include <QGridLayout>
#include <QFormLayout>

Widget::Widget(QWidget *parent)
    : QWidget(parent, Qt::WindowCloseButtonHint)
{


    QLineEdit*  NameEdit = new QLineEdit();
    QLineEdit*  EmailEdit = new QLineEdit();
    QLineEdit*  AddressEdit = new QLineEdit();

    QFormLayout* layout = new QFormLayout();

    layout->addRow("Name: ", NameEdit);
    layout->addRow("Email: ", EmailEdit);
    layout->addRow("Address: ", AddressEdit);

    layout->setRowWrapPolicy(QFormLayout::WrapAllRows);//设置样式
    layout->setLabelAlignment(Qt::AlignRight);

    layout->setSpacing(10);

    setLayout(layout);

}

Widget::~Widget()
{

}

Widget.cpp

 main.cpp

#include <QtGui/QApplication>
#include "Widget.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    
    return a.exec();
}

main.cpp

三、小结

(1)、QFormLayout以表单的方式管理界面组件

(2)、QFormLayout的样式设置简洁明了

(3)、QFormLayout支持布局管理器的相互嵌套

(4)、QFormLayout是嵌入式产品中最常用的布局方式

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值