1. 程式人生 > >設定佈局管理器中item的 伸縮因子(stretch factor)

設定佈局管理器中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; 所有的值沒有保留,會使得設定後執行顯示不對。