布局管理器能根据窗口的变化自动适应窗口大小。布局管理器不是界面组件,只是一种定位的策略,通常使用类库自带的布局管理器类,但也可以自定义布局管理器。
布局管理器类结构:
其中QFromLayout布局在嵌入式领域用的最广泛
布局管理器使用方式:
1.创建布局管理器对象
2.链接组件对象
3.将某个小部件的管理器设置为总布局
QHBoxLayout* hLayout1 = new QHBoxLayout();
QHBoxLayout* hLayout2 = new QHBoxLayout();
QVBoxLayout* vLayout = new QVBoxLayout();
//创建布局管理器对象
TestBtn1.setText("Test Button 1");
TestBtn1.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
TestBtn1.setMinimumSize(160, 30);
TestBtn2.setText("Test Button 2");
TestBtn2.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);//设置控件的大小变化,Expanding:拉伸
TestBtn2.setMinimumSize(160, 30);
hLayout1->setSpacing(10);//设置间隔
hLayout1->addWidget(&TestBtn1);
hLayout1->addWidget(&TestBtn2);
//链接GUI组件对象
TestBtn3.setText("Test Button 3");
TestBtn3.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
TestBtn3.setMinimumSize(160, 30);
TestBtn4.setText("Test Button 4");
TestBtn4.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
TestBtn4.setMinimumSize(160, 30);
hLayout2->setSpacing(10);
hLayout2->addWidget(&TestBtn3);
hLayout2->addWidget(&TestBtn4);
//链接GUI组件对象
vLayout->setSpacing(10);
vLayout->addLayout(hLayout1);
vLayout->addLayout(hLayout2);
////链接布局组件对象,布局管理器之间的相互嵌套
setLayout(vLayout);
//将vLayout设置为总布局
//布局管理器还能设置按比例变化
}
QLineEdit* nameEdit = new QLineEdit();
QLineEdit* emailEdit = new QLineEdit();
QLineEdit* addressEdit = new QLineEdit();
QFormLayout* layout = new QFormLayout();
layout->addRow("Name:", nameEdit); //设置标签和组件
layout->addRow("Email:", emailEdit);
layout->addRow("Address:", addressEdit);
layout->setRowWrapPolicy(QFormLayout::WrapAllRows); //显示方式
layout->setLabelAlignment(Qt::AlignLeft);
setLayout(layout);
setWindowTitle("FTP");
//详细的使用方法参考帮助文档
栈式布局管理器:
-所有组件在垂直于屏幕的方向上被管理
-每次只有一个组件显示在屏幕上
-只有顶层的主机会被最终显示
//文章参考狄泰软件学院Qt视频教程