2011-06-23 56 views
1

我在QMainWindow中使用擴展的QGroupBox作爲QDockWidget的部件。 這裏是代碼片段:Qt QHBoxLayout問題?

RzPlaneViewerControlPanelWidget::RzPlaneViewerControlPanelWidget(QWidget *parent) : QGroupBox(parent) { 
     // TODO Auto-generated constructor stub 
     init(); 

    } 

void RzPlaneViewerControlPanelWidget::init() 
    { 

      QHBoxLayout *hbox=new QHBoxLayout; 
      hbox->setSizeConstraint(hbox->SetMinimumSize); 
      hbox->setSpacing(0); 
      hbox->setStretch(1,0); 

      setMaximumHeight(50); 

      QScrollBar *scrollbar=new QScrollBar; 
      scrollbar->setOrientation(Qt::Horizontal); 
      scrollbar->setMouseTracking(true); 
      scrollbar->setFocusPolicy(Qt::StrongFocus); 
      scrollbar->setMinimum(0); 
      scrollbar->setSingleStep(1); 



      QLineEdit *qlineedit = new QLineEdit; 
      qlineedit->setMaximumWidth(60); 
      qlineedit->setReadOnly(true); 

      hbox->addWidget(scrollbar); 
      hbox->addWidget(qlineedit); 

      //hbox->addWidget(new) 
      setLayout(hbox); 

}

這裏是我這個小部件添加到QDockWidget:

RzPlaneViewerControlPanelWidget *controlPanel=new RzPlaneViewerControlPanelWidget ; 
controlPanel->init(); 

QDockWidget controlPanelDockWidet=new QDockWidget; 
controlPanelDockWidet->setAllowedAreas(Qt::BottomDockWidgetArea); 
controlPanelDockWidet->setFeatures(QDockWidget::DockWidgetVerticalTitleBar); 
controlPanelDockWidet->setWidget(controlPanel); 

但滾動條沒有被拉伸如我所料 - 這裏是怎麼了看起來像 -

http://oi56.tinypic.com/5mzf5y.jpg

這就是我想要的東西 -

http://oi55.tinypic.com/23wv3tf.jpg

回答

3

從快速閱讀,我會嘗試這樣做:

hbox->addWidget(scrollbar, 1); 

第二個(可選)參數addWidget是伸展因子。從Qt docs

如果拉伸係數爲0,並沒有其他的QBoxLayout具有大於零的彈力系數,空間是根據QWidget的分佈:這涉及到每個插件的sizePolicy()。

另外請注意,您:

hbox->setStretch(1,0); 

通話沒有任何影響,因爲它是qlineedit的拉伸係數設置爲0,但是這已經是默認的。

+0

謝謝houbysoft!有效 !!你救了我的一天! –