提示:以下是本篇文章正文内容,下面案例可供参考
可以把一些组件按一定的次序排列,这就是布局管理器。
他可以自动排列窗口中的界面组件
窗口变化后自动更新界面组件。
QVBoxLayout:按垂直的顺序排列组件
添加组件/其他的布局管理器:
addWidget(QWidget*);
addLayout(Layout*);
设置布局管理器管理指定窗口:
Widget->setLayout(Layout*);
设置组件和窗口一起变大变小:
QWidget->setSizePolicy();大家可以查帮助文档,我现在列出一部分QSizePolicy::FixedQSizePolicy::MinimumQSizePolicy::MaximumQSizePolicy::PreferredQSizePolicy::Expanding
设置组件的间隔:
setSpacing(int)
设置组件的比例因子:
setStretch(int index,int stretch)
使用部分:
//构造函数:
Form::Form(QWidget *parent) :QWidget(parent),btn0(this),btn1(this),btn2(this),ui(new Ui::Form)
{ui->setupUi(this);QVBoxLayout *layout = new QVBoxLayout(this);btn0.setText("Button 0");btn1.setText("Button 1");btn2.setText("Button 2");btn0.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);btn1.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);btn2.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);layout->setSpacing(10);layout->addWidget(&btn0);layout->addWidget(&btn1);layout->addWidget(&btn2);setLayout(layout);
}//头文件:
#ifndef FORM_H
#define FORM_H#include
#include namespace Ui {
class Form;
}class Form : public QWidget
{Q_OBJECTQPushButton btn0;QPushButton btn1;QPushButton btn2;public:explicit Form(QWidget *parent = 0);~Form();private:Ui::Form *ui;private slots:
};#endif // FORM_H
他和QVBoxLayout基本一致,在这我就不讲了
1、把下列的组件拖出,把组件放在里面
2、点击按钮,排序某个Widget
先添加组件
首先选中你要排序的Widget
然后点击下面的东西:
想要不用也是很简单,选中指定的Widget,点击打破布局。
把QHbox放到QVbox中,组成一个网格布局。
代码如下:
//Widget,h
#ifndef WIDGET_H
#define WIDGET_H#include
#include namespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTQPushButton btn0;QPushButton btn1;QPushButton btn2;QPushButton btn3;public:explicit Widget(QWidget *parent = 0);~Widget();private:Ui::Widget *ui;
};#endif // WIDGET_H//Widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include
#include Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);QVBoxLayout *layout = new QVBoxLayout(this);QHBoxLayout *hbox1 = new QHBoxLayout(this);QHBoxLayout *hbox2 = new QHBoxLayout(this);btn0.setText("Button 0");btn1.setText("Button 1");btn2.setText("Button 2");btn3.setText("Button 3");btn0.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);btn1.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);btn2.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);btn3.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);layout->addLayout(hbox1);layout->addLayout(hbox2);hbox1->addWidget(&btn0);hbox1->addWidget(&btn1);hbox2->addWidget(&btn2);hbox2->addWidget(&btn3);setLayout(layout);
}Widget::~Widget()
{delete ui;
}
效果如下: