关键词:布局管理器中的比例系数、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
布局管理器
以网格(二维)的方式管理界面组件
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
中的组件可以根据需要跨越多个网格 -
QBoxLayout
和QGridLayout
支持比例系数的概念 - 比例系数决定了组件大小的相对变化
声明:此文章仅是本人在学习狄泰QT实验分析课程所做的笔记,文章中包含狄泰软件资料内容,一切版权归狄泰软件所有!
实验环境:ubuntu10 + Qt Creator2.4.1 + Qt SDK 4.7.4