我已经将QWidget子类化并以这种方式定义了构造函数:
LoupingWidget::LoupingWidget(QWidget *parent): QWidget(parent)
{
QGroupBox *topGroupBox = new QGroupBox(this);
QGraphicsView *xRGBPlot = new QGraphicsView(this);
QGraphicsView *yRGBPlot = new QGraphicsView(this);
QGraphicsView *loupe = new QGraphicsView(this);
QSlider *slider = new QSlider(this);
QGridLayout *boxGLayout = new QGridLayout;
boxGLayout->addWidget(xRGBPlot, 0, 0);
boxGLayout->addWidget(slider, 0, 1);
boxGLayout->addWidget(loupe, 1, 0);
boxGLayout->addWidget(yRGBPlot, 1, 1);
topGroupBox->setLayout(boxGLayout);
}
接下来,我试图将它添加到QDialog中:
Window::Window(QWidget *parent): QDialog(parent)
{
LoupingWidget *firstLoupindWidget = new LoupingWidget(this);
LoupingWidget *secondLoupindWidget = new LoupingWidget(this);
// QGraphicsView *mainPicture = new QGraphicsView(this);
QGridLayout *gridLayout = new QGridLayout;
// gridLayout->addWidget(mainPicture, 0, 0);
gridLayout->addWidget(firstLoupindWidget, 1, 0);
gridLayout->addWidget(secondLoupindWidget, 1, 1);
setLayout(gridLayout);
}
当这两行被注释掉时,两个小部件水平放置。 这很好,但当我用另一个QGraphicsView取消注释时,它会填满整个窗口。
我做错了什么?
答案 0 :(得分:0)
LoupingWidget
没有布局,因此当它添加到另一个布局时,布局无法根据其内容调整大小。您需要在QGridLayout
构造函数中创建另一个布局(例如LoupingWidget
),将topGroupBox
添加到布局中,并将布局设置为LoupingWidget
的布局。