我在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没有像我预期的那样拉伸 - 这是它的样子 -
这就是我想要的 -
答案 0 :(得分:3)
快速阅读,我会尝试:
hbox->addWidget(scrollbar, 1);
addWidget的第二个(可选)参数是伸展因子。来自Qt docs:
如果伸展因子为0且QBoxLayout中没有其他内容的拉伸系数大于零,则根据所涉及的每个窗口小部件的QWidget:sizePolicy()分配空间。
另外,请注意您的:
hbox->setStretch(1,0);
调用没有任何效果,因为它将qlineedit
的伸展因子设置为0,但这已经是默认值。