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

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

1、默认情况下等比例的方式更新组件的大小

2、可以自定义组件大小更新时的比例系数

3、QBoxLayout中的比例系数设置

 

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

二、QGridLayout布局管理器

1、以网格(二维)的方式管理界面组件

2、QGridLayout中的比例系数设置

3、布局管理器的嵌套

(1)、QGridLayout支持嵌套布局管理器成为其管理对象

#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 QLayoutTest();
public:
    Widget(QWidget *parent = 0);
    ~Widget();
};

#endif // WIDGET_H
Widget.h
#include "Widget.h"
#include <QVBoxLayout>

Widget::Widget(QWidget *parent)
    : QWidget(parent), Btn1(this), Btn2(this), Btn3(this), Btn4(this)
{
    QLayoutTest();
}

void Widget::QLayoutTest()
{
    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->addWidget(&Btn1, 0, 0);//在第0行第0列
    layout->addWidget(&Btn2, 0, 1);
    layout->addWidget(&Btn3, 1, 0);
    layout->addWidget(&Btn4, 1, 1);

    layout->setSpacing(10);
    layout->setRowStretch(0, 2);//第0行,两倍

    setLayout(layout);


}

Widget::~Widget()
{

}
Widget.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)、QGridLayout网格的方式对组件进行管理

(2)、QGridLayout中的组件可以根据需要跨越多个网络

(3)、QBoxLayout和QGridLayout支持比例系数的概念

(4)、比例系数决定了组件大小的相对变化

 

原文地址:https://www.cnblogs.com/gui-lin/p/6403963.html