Qt提供的布局类以及他们之间的继承关系
QLayout-----QGirdLayout
|
---QBoxLayout----QHBoxLayout
|
--QVBoxLayout
-----------------------------------------------------------------------------
常用到的布局类有:QHBoxlayout、QVBoxLayout、QGridLayout三种,分别是水平排列布局、垂直排列布局、表格排列布局。
常用到的方法有:addWidget()和addLayout().addWidget()用于在布局中插入控件,addLayout()用于在布局中插入子布局。
----------------------------------------------------------------------------
在布局管理还常用到 setMargin()用于设定边距,setSpacing()用于设定控件间距。
setColumnStretch()用于设置列的占空比。
-----------------------------------------------------------------------------
比起QHBoxLayout和QVBoxLayout,QGridLayout运用起来更加灵活。
QGridLayout的常用方法
1)addWidget方法:
//放置一个控件到一个单元格
void addWidget(QWidget *widget,int row,int column,Qt::Alignment alignment =0 )
//如果放置的控件超出一个单元格,则使用该方法。
void addWidget(QWidget *widget,int fromRow,int fromColumn,int rowSpan,int columnSpan,Qt::Alignment alignment = 0)
1》row:指放置控件的网格行号(行号从0开始);
2》column:指放置控件的网格列号(从0开始);
3》alignment:对齐方式。
4》fromRow:指放置控件的起始网格行号。
5》formColumn:指放置控件的起始网格列号。
6》rowSpan:指放置控件占多少行。
7》columnSpan:指放置控件占多少列。
2)addLayout
void addLayout(QLayout *layout,int row,int column,Qt::Alignment alignment = 0)
void addLayout(QLayout *layout,int row,int column,int rowSpan,int columnSpan,Qt::Alignment alignemnt = 0)
参数与addWidget类似。
3)setSpacing
void QGridLayout::setSpacing(int spacing)
设置控件水平和垂直之间的间隔
-----------------------------------------------------------------------------
在设计软件中各个部件的位置排列,有两种方法:
1)设置widget的父窗体的坐标和大小
widget->move(x,y);
widget->resize(width,height);
//widget->setGeometry(QRect(x,y,width,height));
优点:不想被布局约束,对这种控件可控制
缺点:在遇到很多个部件时,一个个算坐标会很麻烦。
-----------------------------------------------------------------------------
layout->addStretch();//添加可伸缩控件,我感觉就是占地方的那种
layout->setAlignment(Qt::AlignHCenter);//布局内控件水平居中
layout->setSpacing(10);//设置控件间的间隔为10
layout->setMargin(10);//设置页边距为10
Qt设计器中spacer控件
以上在控件位置调整时常用
-----------------------------------------------------------------------------
控制布局管理中的控件自使应方式(控件随主窗体伸缩方式(可自行增大或缩小))
QSizePolicy sizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
//可自行增大或缩小
Fixed:不能放大或缩小
Minimum: 不能小于sizeHint尺寸,可放大(若设置了最大尺寸 )
Maximum:不能放大,可缩小到允许的最小尺寸(若setMinimumSize(10,10)只能缩小到(10,10))
Preferred:控件的sizeHint是它的Hint,可以放大或缩小。
Expandint:控件可以自行增大或者缩小。
-----------------------------------------------------------------------------