在QHBoxLayout中使用setStretchFactor时,发现控件并没有按照想象成比例缩放. 我是将setStretchFactor 放在了 addWidget 之前,. 最后发现, 放在之后就对了 ,
而且不用设置 setSizePolicy . 正确代码如下
QHBoxLayout* pMDLay = new QHBoxLayout(this);
pLabel = new QLabel("类型:");
m_pMDType = new QComboBox();//帽石类型
m_pMDType->addItem("上传");
m_pMDType->addItem("下载");
m_pSaveMaoshiTypeBtn = new QPushButton("保存");
// //控制下变量布局的伸缩因子
pLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
m_pMDType->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
m_pSaveMaoshiTypeBtn->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
pLabel->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
m_pMDType->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
m_pSaveMaoshiTypeBtn->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
//必须放在addwidget后面伸缩策略才能使用
// pMDLay->setStretchFactor(pLabel, 1);
// pMDLay->setStretchFactor(m_pMDType, 4);
// pMDLay->setStretchFactor(m_pSaveMaoshiTypeBtn, 4);
pMDLay->addWidget(pLabel);
//pMDLay->addSpacing(100);
pMDLay->addWidget(m_pMDType);
//pMDLay->addSpacing(50);
pMDLay->addWidget(m_pSaveMaoshiTypeBtn);
//pMDLay->addSpacing(50);
//必须放在addWidget 后面才行,否则不起作用的
pMDLay->setStretchFactor(pLabel, 1);
pMDLay->setStretchFactor(m_pMDType, 4);
pMDLay->setStretchFactor(m_pSaveMaoshiTypeBtn, 4);