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);