設定佈局管理器中item的 伸縮因子(stretch factor)
示例:
之類加入要設定一個水平佈局管理器的兩個item的比例,1:5 水平比例顯示;
QHBoxLayout * pQHBoxLayout = (QHBoxLayout *)pcentralWidget->layout();
QPushButton * pQPushButton1 = new QPushButton( "btn1", this );
QPushButton * pQPushButton2 = new QPushButton( "btn2", this );
pQHBoxLayout->addWidget( pQPushButton1 );
pQHBoxLayout->addWidget( pQPushButton2 );
QSizePolicy QSizePolicy1;
QSizePolicy QSizePolicy2;
QSizePolicy1.setHorizontalStretch(1);
QSizePolicy2.setHorizontalStretch(5);
pQPushButton1->setSizePolicy( QSizePolicy1 );
pQPushButton2->setSizePolicy( QSizePolicy2 );
上述程式碼初看,沒有什麼問題,但是執行後沒有想要達到的效果;
修改方式:
QHBoxLayout * pQHBoxLayout = (QHBoxLayout *)pcentralWidget->layout();
QPushButton * pQPushButton1 = new QPushButton( "btn1", this );
QPushButton * pQPushButton2 = new QPushButton( "btn2", this );
pQHBoxLayout->addWidget( pQPushButton1 );
pQHBoxLayout->addWidget( pQPushButton2 );
QSizePolicy QSizePolicy1 = pQPushButton1->sizePolicy();
QSizePolicy QSizePolicy2 = pQPushButton2->sizePolicy();
QSizePolicy1.setHorizontalStretch(1);
QSizePolicy2.setHorizontalStretch(5);
pQPushButton1->setSizePolicy( QSizePolicy1 );
pQPushButton2->setSizePolicy( QSizePolicy2 );
//注意:
從上述描述可以看出,設定指定的itme 因子,要保留沒有設定的因子值;
當設定QSizePolicy QSizePolicy1; 所有的值沒有保留,會使得設定後執行顯示不對。