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:控件可以自行增大或者縮小。
-----------------------------------------------------------------------------