Qt入门(6)——Qt的界面布局


Qt提供四种布局:

 

VBoxLayout:垂直布局

HBoxLayout:水平布局

GridLayout:二维布局。

FormLayout: 窗体布局

 

水平布局管理器可以把它所管理的部件以水平的顺序依次排开,例如上图中中间的“Centigrade”和“Fahrenheit”两段文字,就是水平排列的,这个时候就可以用水平布局管理器来实现。

垂直管理器类似,它可以把它所管理的部件以垂直的顺序依次排开,例如上图中右侧的液晶数字和地下的表盘,就形成了垂直排列,这个时候就可以用垂直管理器来实现。

Grid布局管理器可以以网格的形式,将它所管理的部件以一定的矩阵形式排列。比如上图中,所有的部件一起看,其实就是一种矩阵的形式来排列的。

 

 

这种布局生成的格局比较单一,这时候需要另外两个填充控件,来生成整行或整列的格式。

 

注意:使用Spacers控件时,必须要放在layouts中的布局中,否则无法保存。

示例:

1、往界面拖入一个verticalLayout

2、往verticalLayout拖入一个spinBox,然后在拖入一个verticalSpacer

3、拖入其它一些控件

4、选择这个格子布局

将得到以下图形

5、在没有使用填充布局时,控件一般是平分的,有时需要调整一下控件的大小分布

6、完成上述部署后,如果需要随窗口的大小进行变换,可在界面上右键->布局

选择一种布局即可,这时你的界面将随着窗体的大小自动伸缩。

 

 

 

我们再设计一个布局:

整体效果来看,以QGroupBox为单位局部效果较好:

对应代码如下:

QGroupBox* rotateGroup = newQGroupBox(tr("Rotate")); 
QFormLayout *formLayout = newQFormLayout; 
QDoubleSpinBox*  rotateSpin = new QDoubleSpinBox; 
rotateSpin->setRange(0.0, 360.0); 
formLayout->addRow(newQLabel(tr("Angle: ")), rotateSpin); 
rotateGroup->setLayout(formLayout); 
 
QGroupBox* fillGroup = newQGroupBox(tr("Render Mode")); 
QRadioButton* wireButton = newQRadioButton(tr("Wired")); 
QRadioButton* fillButton = newQRadioButton(tr("Filled")); 
QVBoxLayout *groupBoxLayout = new QVBoxLayout; 
groupBoxLayout->addWidget(wireButton); 
groupBoxLayout->addWidget(fillButton); 
fillGroup->setLayout(groupBoxLayout); 


 

posted on 2014-09-04 11:30  三少爷的剑123  阅读(373)  评论(0编辑  收藏  举报

导航