Qt QHBoxLayout问题?

时间:2011-06-23 03:28:38

标签: c++ qt layout qt4

我在QMainWindow中使用扩展的QGroupBox作为QDockWidget的小部件。 以下是代码段:

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);

但ScrollBar没有像我预期的那样拉伸 - 这是它的样子 -

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

这就是我想要的 -

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

1 个答案:

答案 0 :(得分:3)

快速阅读,我会尝试:

hbox->addWidget(scrollbar, 1);

addWidget的第二个(可选)参数是伸展因子。来自Qt docs

  

如果伸展因子为0且QBoxLayout中没有其他内容的拉伸系数大于零,则根据所涉及的每个窗口小部件的QWidget:sizePolicy()分配空间。

另外,请注意您的:

hbox->setStretch(1,0);

调用没有任何效果,因为它将qlineedit的伸展因子设置为0,但这已经是默认值。