码迷,mamicode.com
首页 > 其他好文 > 详细

Qt布局管理器的使用(二)

时间:2015-04-18 01:14:24      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:qt   布局   

 Qt布局管理器的使用(二)

        前面博文(http://blog.csdn.net/u013704336/article/details/38960353)讲解了手动布局的基本思路,今天说下用代码怎样进行一些常用的简单布局。

        首先,心中要规划好,自己要实现的模块的分布可以事先在纸上进行大致的绘制,然后心中就有了大致的轮廓。

       今天就按照上次讲的,实现那个录入商品信息的布局吧。如下图所示:

技术分享

        仔细观察,就可以发现这个布局的思想。基本都是水平布局,然后再将各自布局进行垂直布局,好了,说了这么多废话,直接上代码,边解释边说 吧。

首先是添加头文件了:

#include <QPushButton>
#include <QLabel>
#include <QLineEdit>
#include <QComboBox>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QGridLayout>

接着进行空间的定义:

    QLabel *labelGsId;
    QLabel *labelGsName;
    QLabel *labelGsType;
    QLabel *labelGsColor;
    QLabel *labelGsNum;

    QLineEdit *editGsId;
    QLineEdit *editGsName;
    QLineEdit *editGsNum;

    QComboBox *comboxGsColor;
    QComboBox *comboxGsType;

    QPushButton *pubnFineGsId;
    QPushButton *pubnFindGsName;
    QPushButton *pubnGsFindColr;

    QGridLayout *leftLayout;//网格布局声明

然后再构造函数中进行初始化操作:

    this->labelGsId = new QLabel(this);
    this->labelGsId->setText("商品条码");

    this->labelGsName = new QLabel(this);
    this->labelGsName->setText("商品名称");

    this->labelGsType = new QLabel(this);
    this->labelGsType->setText("规格型号");

    this->labelGsColor = new QLabel(this);
    this->labelGsColor->setText("颜色");

    this->labelGsNum = new QLabel(this);
    this->labelGsNum->setText("进货数量");

    this->editGsId = new QLineEdit(this);
    this->editGsName = new QLineEdit(this);
    this->editGsNum = new QLineEdit(this);

    this->comboxGsColor = new QComboBox(this);
    this->comboxGsType = new QComboBox(this);

    this->pubnFineGsId = new QPushButton(this);
    this->pubnFineGsId->setText("查找");

    this->pubnFindGsName = new QPushButton(this);
    this->pubnFindGsName->setText("查找");

    this->pubnGsFindColr = new QPushButton(this);
    this->pubnGsFindColr->setText("查找");

最后将所有的空间进行布局操作:

此次布局我们采用网格布局,因为发现这个控件形成的效果很符合网格布局的特性,这里只是实现了左边的布局,原理是一样的。

首先看下这个类的布局函数:

void QGridLayout::addWidget ( QWidget * widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = 0 )

第一个参数指定了需要添加的窗体指针,第二个和第三个是控件所在的坐标,第四个和第五个是行列的可以跨多行,在本次代码中我同意设置成了1,代表他们都占1行,你也可以根据需要设置他们占2行或者其他,最后一个参数是说明文字是水平对齐还是左对齐或者右对齐。这几个参数还是很好理解的。

布局代码:


    //创建网格布局
    this->leftLayout = new QGridLayout(this);
    leftLayout->addWidget(labelGsId,0,0,1,1);
    leftLayout->addWidget(editGsId,0,1,1,1);
    leftLayout->addWidget(pubnFineGsId,0,2,1,1);

    leftLayout->addWidget(labelGsName,1,0,1,1);
    leftLayout->addWidget(editGsName,1,1,1,1);
    leftLayout->addWidget(pubnFindGsName,1,2,1,1);

    leftLayout->addWidget(labelGsType,2,0,1,1);
    leftLayout->addWidget(comboxGsType,2,1,1,1);

    leftLayout->addWidget(labelGsColor,3,0,1,1);
    leftLayout->addWidget(comboxGsColor,3,1,1,1);
    leftLayout->addWidget(pubnGsFindColr,3,2,1,1);

    leftLayout->addWidget(labelGsNum,4,0,1,1);
    leftLayout->addWidget(editGsNum,4,1,1,1);

    //setLayout(leftLayout);

此刻布完局后的效果如下所示:

技术分享

       当然看起来还是挺挫的,因为没有根据实际的需求设置大小策略等等信息,在实际中可以按照自己的需求进行相应的设置,使空间满足一定的伸缩需求。

本次练习代码下载:

http://download.csdn.net/detail/u013704336/8606077



技术在于交流、分享……

博客地址:http://blog.csdn.net/u013704336\

Email:creazylq@163.com

        QQ:936563422


Qt布局管理器的使用(二)

标签:qt   布局   

原文地址:http://blog.csdn.net/u013704336/article/details/45103613

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!