2011-06-23 8 views
1

QMainWindowのQDockWidgetのウィジェットとして拡張QGroupBoxを使用します。ここでQt QHBoxレイアウトの問題?

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に2番目(オプション)の引数は、伸長因子です。 Qt docsから:

伸長因子はQBoxLayoutで0何もない場合にはゼロよりも大きく伸長因子を持っている、スペースはQWidgetに応じて配布されますかかわっだ各ウィジェットのsizePolicyを()。また

、自分のことに注意してください:それは0にqlineeditの伸長因子を設定しているよう

hbox->setStretch(1,0); 

呼び出しは、任意の効果はありませんが、それはすでにデフォルトです。

+0

ありがとうhoubysoft !!出来た !!あなたは私の日を救った! –