布局
- 水平布局
- 垂直布局
- 网格布局
widget的应用
将对应的按钮,label放入到widget中
水平弹簧和垂直弹簧
使用弹簧来对他们布局
设置弹簧属性:
最后结果——页面中的内容和随页面的缩小和方法自适应。
水平布局和垂直布局只能针对一行一列
将用户密码放入到同一个widget。选中,点击网格布局。
一个窗口需要分成几部分
QSpacerltem(int w,int h,QSizePolicy:Policy hPolicy QSizePolicy:Minimum,QSizePolicy::Policy
VPolicy QSizePolicy:Minimum);
备注:常用于初始化构造弹簧时,设置固定或可变大小的区域。
void changeSize(int w,int h,QSizePolicy:Policy hPolicy QSizePolicy:Minimum,QSizePolicy:Policy
vPolicy QSizePolicy:Minimum);
备注:常用于动态改变弹簧的大小,设置大小变化及隐藏功能时使用。
/**************************隐藏 弹簧******************************/
ui->horizonSpacer->changeSize(0, 0);
/**************显示并改变 horizon 类型的 弹簧*********************/
ui->horizonSpacer->changeSize(20, 20, QSizePolicy::Expanding);
/**************显示并改变 vertical 类型的 弹簧********************/
ui->verticalSpacer->changeSize(20, 20, QSizePolicy::Preferred, QSizePolicy::Expanding);
void InitControls()
{
m_pCustomLayout = new QHBoxLayout; //创建水平布局
m_pCustomLayout->setContentMargins(0,0,0,0);
m_pCustomLayout->setSpacing(30);
//为水平布局左侧,添加固定长度120大小的弹簧
m_pLeftHorizonSpacer = new QSpacerItem(120,20,QSizePolicy::Fixed,QSizePolicy::Minimum);
m_pCustomLayout->addItem(m_pLeftHorizonSpacer);
m_pCustomLayout->addStretch(1); //均分布局(使按钮居中)
//btn_ok按钮
btn_ok = new QPustButton(this);
m_pCustomLayout->addWidget(btn_ok);
//btn_cancel按钮
btn_cancel = new QPushButton(this);
m_pCustomLayout->addWidget(btn_cancel);
m_pCustomLayout->addStretch(1); //均分布局(使按钮居中)
//将layout布局加入到界面中
setLayout(m_pCustomLayout);
}
void SetCenterButtonStyle()
{
m_pLeftHorizonSpacer->changeSize(0, 0);
m_pCustomLayout->update();
}