在Qt中,有三种基本布局:水平布局,垂直布局、网格布局,它们分别属于QHBoxLayout、QVBoxLayout以及QGridLayout。
它们的继承关系是这样的:
布局中 常用的方法就是addWidget()和addLayout()。
addWidget()的参数说明
1、需要插入布局的控价的对象
2、插入如的行
3、插入的列
4、占用的行
5、占用的列
6、描述各个控件的对齐方式
addLayout()的参数说明
1、需要插入的子布局对象
2、插入的起始行
3、插入的起始列
4、占用的行
5、占用的列
6、对齐方式
我们来看一个具体的例子。新建一个项目,基类选择二QWidge, 取消创建图形界面。
然后在类型添加这几个成员变量。
QPushButton *btn1; QPushButton *btn2; QLabel *lb1; QLabel *lb2; QHBoxLayout *hlayout1; QHBoxLayout *hlayout2; QVBoxLayout *vlayout; QGridLayout *glayout;
然后我们在构造函数中对这些成员变量进行初始化。
//对这些标签和按钮进行初始化 lb1 = new QLabel("标签1"); lb2 = new QLabel("标签2"); btn1 = new QPushButton("按钮1"); btn2 = new QPushButton("按钮2"); hlayout1 = new QHBoxLayout; hlayout2 = new QHBoxLayout; vlayout = new QVBoxLayout; glayout = new QGridLayout(this);
然后将标签1和按钮1,标签2,按钮2分别进行水平布局。
hlayout1->addWidget(lb1); hlayout1->addWidget(btn1); hlayout2->addWidget(lb2); hlayout2->addWidget(btn2);
最后在将这两个水平布局加入到网格布局中,网格布局作为主布局。
glayout->addLayout(hlayout1,0,0); glayout->addLayout(hlayout2,1,0);最后编译一下,就会出现这样的结果
接下来用垂直布局试试看。
我们将四个控件都加入垂直布局中
vlayout->addWidget(lb1); vlayout->addWidget(btn1); vlayout->addWidget(lb2); vlayout->addWidget(btn2);
最后将这个垂直布局加入网格布局中
glayout->addLayout(vlayout,0,0);
出来的结果就是这个样子
以上就是基本布局的几种用法。