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:[email protected]

QQ:936563422

时间: 2024-10-25 03:46:20

Qt布局管理器的使用(二)的相关文章

QT开发(二十一)——QT布局管理器

QT开发(二十一)--QT布局管理器 一.布局管理器简介 QT中使用绝对定位的布局方式无法自适应窗口的变化. QT中提供了对界面组件进行布局管理的类,用于对界面组件进行管理,能够自动排列窗口中的界面组件,窗口大小变化后自动更新界面组件的大小. QLayout是QT中布局管理器的抽象基类,通过对QLayout的继承,实现了功能各异且互补的布局管理器. 布局管理器不是界面组件,而是界面组件的定位策略. 任意容器类型的组件都可以指定布局管理器. 同一个布局管理器管理中的组件拥有相同的父组件,在设置布局

Qt布局管理器(详解)

1.存在的问题 (1)目前的GUI开发方式:绝对定位 --直接在像素级指定各个组件的位置和大小 void QWidget::move(int x, int y) void QWidget::resize(int w, int h) (2)问题 --组件位置和大小无法自适应父窗口的变化 2.布局管理器 (1)解决方案:布局管理器 --提供相关的类对界面组件进行布局管理 @1:能够自动排列窗口中的界面组件 @2:窗口变化后自动更新界面组件的大小 (2)QLayout是Qt中布局管理器的抽象基类 (3

Qt 布局管理器

在一个颜值当道的今天,无论买衣服,买车还是追星,颜值的高低已经变成了大家最看重的(不管男性女性都一样,千万别和我说你不是):而对于程序猿来说,开发一款软件,不再只注重逻辑和稳定性,美观和用户友好性也是我们不得不关注的一个重点了. 我们进入正题,今天主要和大家分享一下Qt方面关于布局管理器的使用: 一.基本概念   Qt 提供了几种在窗口部件上管理子窗口部件的基本方式.一共有3 种方法用于管理窗体上子窗口部件的布局:绝对位置法.人工布局法和布局管理器法.相比于使用固定尺寸和位置,布局提供了功能强大

Qt布局管理器综合实例

1.布局管理器的综合实例------模拟向导用户界面(Windows平台) -----练习开发一个向导用户界面 @1:在同一界面上展现不同的向导页面 @2:通过上一步和下一步按钮进行切换 @3:不同页面上的元素组件和这些组件排布都不相同 @4:页面中的组件通过布局管理进行排布 (1)通过布局嵌套进行界面设计 @1:上一步和下一步这两个按钮用水平布局管理器QHBoxLayout来进行管理,不同页面上的显示的内容只有按钮不变,所以讲不同页面的内容用栈式布局管理器QStackedLayout进行管理,

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

曾经对Qt的布局管理器掌握的还不清楚,今天特意学习了下.感觉收获还挺大的,特意拿出来和大家分享. 首先.要明确布局管理器的用处,及使我们的界面看起来比較整洁.美化.另外一点就是为了使我们的控件可以更随窗体的大小而变化,窗体大的时候它变大,窗体小的时候它变小. 一般写 好的软件都要能最大化.最小化,非常多时候当我们最大化后,发现控件还是原来的样子.非常难看,如今就不用发愁了,首先用手动布局实现.由于这个比較简单,并且非常直观. 首先贴一张我自己刚布好的局. 还算整洁.这张是它最初的大小,将它最大化

Qt——布局管理器

教程地址 运行截图: 代码: #include "mainwindow.h" #include <QApplication> #include <QHBoxLayout> #include <QWidget> #include <QSpinBox> #include <QObject> #include <QHBoxLayout> #include <QSlider> int main(int argc

Qt布局管理器

1.Qt提供的布局类以及他们之间的继承关系(如下图): Qt 常用的layout 有QHBoxLayout.QVBoxLayout.QGridLayout 常用的方法有addWidget()和addLayout().addWidget()用于在布局中插入控件,addLayout()用于在布局中插入子布局. 在布局管理中还常用到setMargin()用于设定边距,setSpacing()用于设定控件间距. setColumnStretch()用于设置列的占空比. QFormLayou null

第23课 布局管理器(二)

1. 布局管理器中的比例系数 (1)默认情况下以等比例的方式更新组件大小 (2)可以自定义组件大小更新时的比例系数 2. QBoxLayout中的比例系数设置 (1)void setStretch(int index, int stretch); //设置指定索引对象的比例系数 (2)bool setStretchFactor(QWidget* widget, int stretch); (3)bool setStretchFactor(QLayout* layout, int stretch)

Qt学习四 - 布局管理器

开发界面程序,一定会涉及到布局的问题.我们需要让控件显示在理想中的位置,可以直接设置控件的坐标和宽高.但是这样带来一个问题,当用户改变窗口大小时,例如点击最大化按钮或者拖拽窗口边缘,控件是不会改变的(包括控件的坐标和宽高).因为在窗口改变时,你没有告诉程序是否更新控件以及如何更新.如果需要让控件自动更新,那么就要自己来写一些函数来相应这些变化.针对这种情况,Qt提供了一种机制 - 布局,来解决这个问题(大部分用于开发界面程序的语言或者框架,都会提供类似的机制).只需要将控件放入某一种布局,当位置