第23课 布局管理器(二)

1、布局管理器的比例系数

    1.1、 默认情况下 等比例 的方式更新组件的大小
    1.2、 可以自定义 组件大小 更新时的比例系数(布局管理最好的特性是:随着窗口的大小做出改变。)
    1.3、 QBoxLayout中的比例系数设置
                

上接22课的内容,添加如下代码。(测试三种比例系数)

    1.4、 注意:组件的初始化大小是独立于布局管理器设置的,因此不能保证组件的大小始终符合比例系数的设置(比如刚运行时一样大小,主窗口变大后差异才显现出来)

2、QGridLayout布局管理器

    2.1、 网格(二维)的方式管理界面组件
        
    2.2、 QGridLayout中的比例系数设置
        

    2.3、 布局管理器的嵌套
        2.3.1、 QGridLayout支持嵌套布局管理器成为其管理对象
        

.h文件

#ifndef _WIDGET_H_
#define _WIDGET_H_
#include <QtGui/QWidget>
#include <QPushButton>
class Widget : public QWidget
{
    Q_OBJECT
private:
    QPushButton btn1;
    QPushButton btn2;
    QPushButton btn3;
    QPushButton btn4;
    void QGridLayoutTest();
public:
    Widget(QWidget *parent = 0);
    ~Widget();
};
#endif // WIDGET_H

.cpp文件


#include "widget.h"
#include <QGridLayout>
Widget::Widget(QWidget *parent)
    : QWidget(parent), btn1(this), btn2(this), btn3(this), btn4(this)
{
    QGridLayoutTest();
}
void Widget::QGridLayoutTest()
{
    btn1.setText("btn1");
    btn2.setText("btn2");
    btn3.setText("btn3");
    btn4.setText("btn4");
    btn1.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);//控件的水平和垂直都随着主窗口的变化而变化。
    btn1.setMinimumSize(160,50);//设置最小大小
    btn2.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);//控件的水平和垂直都随着主窗口的变化而变化。
    btn2.setMinimumSize(160,50);
    btn3.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);//控件的水平和垂直都随着主窗口的变化而变化。
    btn3.setMinimumSize(160,50);
    btn4.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);//控件的水平和垂直都随着主窗口的变化而变化。
    btn4.setMinimumSize(160,50);
    QGridLayout* layout = new QGridLayout();
    layout->setSpacing(10);//控件间隔长度10
    layout->addWidget(&btn1, 0, 0, 2, 1);//这个btn1在第0行第0个位置,分为两行占其中一列。
    layout->addWidget(&btn2, 0, 1, 2, 1);//跨越网格。
    layout->addWidget(&btn3, 2, 0, 1, 2);
    layout->addWidget(&btn4, 3, 0, 1, 2);//这个btn4在第3行第0个位置,控件占一行。
    //layout->setRowStretch(0, 2);//第0行, 两倍, 就是说第一行和第二行2:2
    //layout->setRowStretch(1, 2);//第1行, 两倍
    this->setLayout(layout);
}
Widget::~Widget()
{
}


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();
}


3、小结

    3.1、 QGridLayout网格的方式对组件进行管理
    3.2、 QGridLayout中的组件可以根据需要跨越多个网络(最好不要跨越)
    3.3、 QBoxLayout和QGridLayout支持比例系数的概念
    3.4、 比例系数决定了组件大小的相对变化





























评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值