布局管理器
布局管理器,有方向,间距,addwidget
类 | 描述 |
---|---|
QBoxLayout | 水平或垂直排列控件的基类 |
QButtonGroup | 组织按钮的容器 |
QFormLayout | 管理输入控件和其相关的标签 |
QGraphicsAnchor | 表示在QGraphicsAnchorLayout中两个项目之间的锚 |
QGraphicsAnchorLayout | 在图形视图中可以将锚连接到一起 |
QGridLayout | 网格布局(多行多列) |
QGroupBox | 带标题的分组框 |
QHBoxLayout | 水平排列控件 |
QLayout | 几何管理器的基类 |
QLayoutItem | 抽象的操作布局Item |
QSizePolicy | 描述水平和垂直大小调整的策略 |
QSpacerItem | 布局中的空间隔 |
QStackedLayout | 切换控件,同一时间只有一个控件可见 |
QStackedWidget | 切换控件,同一时间只有一个控件可见 |
QVBoxLayout | 垂直排列控件 |
QWidgetItem | 表示一个控件的布局项 |
布局例子
QBoxLayout/QVBoxLayout/QHBoxlayout
拥有QHBoxLayout和QVBoxLayout
- set
函数 | 描述 |
---|---|
QBoxLayout(QBoxLayout::Direction dir, QWidget *parent = nullptr) | 构造函数 |
virtual ~QBoxLayout() | 析构函数 |
void addLayout(QLayout *layout, int stretch = 0) | 添加 |
void addSpacerItem(QSpacerItem *spacerItem) | 添加spaceitem |
void addSpacing(int size) | 间距 |
void addStretch(int stretch = 0) | 可以让其居左或者居右或者居中,看例子 |
void addStrut(int size) | |
void addWidget(QWidget *widget, int stretch = 0, Qt::Alignment alignment = …) | 对齐方式 |
QBoxLayout::Direction direction() const | 方向 |
void insertItem(int index, QLayoutItem *item) | 插入 |
void insertLayout(int index, QLayout *layout, int stretch = 0) | 插入 |
void insertSpacerItem(int index, QSpacerItem *spacerItem) | |
void insertSpacing(int index, int size) | |
void insertStretch(int index, int stretch = 0) | |
void insertWidget(int index, QWidget *widget, int stretch = 0, Qt::Alignment alignment = …) | |
void setDirection(QBoxLayout::Direction direction) | 设置方向 |
void setSpacing(int spacing) | 设置空格 |
void setStretch(int index, int stretch) | 设置长度 |
bool setStretchFactor(QWidget *widget, int stretch) | 可以进行伸缩 |
bool setStretchFactor(QLayout *layout, int stretch) | |
int spacing() const | 返回间距 |
int stretch(int index) const | 返回长度 |
/*
* hbox and vbox 是box确定方向之后的产物,没啥特殊
* box 属性有间距addspace,空白补齐addstrlen,以及方向direction
* 他的函数也全部用来操作上面的属性
*/
mywidget::mywidget()
{
setWindowTitle("my widget test");
QHBoxLayout *layout=new QHBoxLayout(this);
//垂直的布局
QWidget *pvwidget=new QWidget(this);
QBoxLayout *pvlayout=new QBoxLayout(QBoxLayout::BottomToTop,pvwidget); //布局管理器
for(int i=0;i<5;i++)
{
QPushButton *ppushbutton=new QPushButton("vertical"+QString::number(i+1,