Qt QHBoxLayout проблема? - PullRequest
1 голос
/ 23 июня 2011

Я использую расширенный QGroupBox в качестве виджета для QDockWidget в моем QMainWindow. Вот фрагмент кода:

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

1 Ответ

3 голосов
/ 23 июня 2011

Из быстрого чтения я бы попробовал сделать:

hbox->addWidget(scrollbar, 1);

Второй (необязательный) аргумент addWidget - это коэффициент растяжения.Из Qt docs :

Если коэффициент растяжения равен 0 и ничто другое в QBoxLayout не имеет коэффициент растяжения больше нуля, пространство распределяется в соответствии с QWidget: sizePolicy() каждого участвующего виджета.

Также обратите внимание, что ваш вызов:

hbox->setStretch(1,0);

не имеет никакого эффекта, так как он устанавливает растяжение qlineeditкоэффициент до 0, но это уже по умолчанию.

...