23_布局管理器(二)

关键词:布局管理器中的比例系数、QBoxLayout中的比例系数设置、QGridLayout布局管理器

1. 布局管理器中的比例系数

  • 默认情况下以等比例的方式更新组件的大小
  • Qt中可以自定义组件大小更新时的比例系数QGridLayout布局管理器

2. QBoxLayout中的比例系数设置

void Layout::testVBoxLayout()
{
    QVBoxLayout* layout = new QVBoxLayout();

    testBtn1.setText("Button 1");
    testBtn1.setSizePolicy(QSizePolicy::Expanding,
                           QSizePolicy::Expanding);
    testBtn1.setMinimumSize(160, 30);

    testBtn2.setText("Button 2");
    testBtn2.setSizePolicy(QSizePolicy::Expanding,
                           QSizePolicy::Expanding);
    testBtn2.setMinimumSize(160, 30);

    testBtn3.setText("Button 3");
    testBtn3.setSizePolicy(QSizePolicy::Expanding,
                           QSizePolicy::Expanding);
    testBtn3.setMinimumSize(160, 30);

    testBtn4.setText("Button 4");
    testBtn4.setSizePolicy(QSizePolicy::Expanding,
                           QSizePolicy::Expanding);
    testBtn4.setMinimumSize(160, 30);

    layout->addWidget(&testBtn1);
    layout->addWidget(&testBtn2);
    layout->addWidget(&testBtn3);
    layout->addWidget(&testBtn4);
    layout->setSpacing(10);

    layout->setStretch(0, 1);       // 设置比例系数
    layout->setStretch(1, 1);
    layout->setStretch(2, 2);
    layout->setStretch(3, 2);

    setLayout(layout);
}

组件的初始大小是独立于布局管理器设置的,因此,不能保证组件的大小始终符合比例系数的设置

3. QGridLayout布局管理器

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

23_布局管理器(二)_第1张图片

void Layout::testGridLayout()
{
    QGridLayout* layout = new QGridLayout();

    testBtn1.setText("Button 1");
    testBtn1.setSizePolicy(QSizePolicy::Expanding,
                           QSizePolicy::Expanding);
    testBtn1.setMinimumSize(160, 30);
    testBtn2.setText("Button 2");
    testBtn2.setSizePolicy(QSizePolicy::Expanding,
                           QSizePolicy::Expanding);
    testBtn2.setMinimumSize(160, 30);

    testBtn3.setText("Button 3");
    testBtn3.setSizePolicy(QSizePolicy::Expanding,
                           QSizePolicy::Expanding);
    testBtn3.setMinimumSize(160, 30);

    testBtn4.setText("Button 4");
    testBtn4.setSizePolicy(QSizePolicy::Expanding,
                           QSizePolicy::Expanding);
    testBtn4.setMinimumSize(160, 30);

    layout->addWidget(&testBtn1, 0, 0);
    layout->addWidget(&testBtn2, 0, 1);
    layout->addWidget(&testBtn3, 1, 0);
    layout->addWidget(&testBtn4, 1, 1);
    layout->setSpacing(10);

    layout->setColumnStretch(0, 1);
    layout->setColumnStretch(1, 2);

    this->setLayout(layout);
}

4. 小结

  • QGridLayout网格的方式对组件进行管理
  • QGridLayout中的组件可以根据需要跨越多个网格
  • QBoxLayoutQGridLayout支持比例系数的概念
  • 比例系数决定了组件大小的相对变化

声明:此文章仅是本人在学习狄泰QT实验分析课程所做的笔记,文章中包含狄泰软件资料内容,一切版权归狄泰软件所有!
实验环境:ubuntu10 + Qt Creator2.4.1 + Qt SDK 4.7.4

你可能感兴趣的:(23_布局管理器(二))