0

I've subclassed QWidget and defined constructor this way:

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

Next, I am trying to add it in a 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);
}

When this two lines are commented out, two widgets are placed horizontally. And that's good, but when I uncomment lines with another QGraphicsViews, it fills entire window.

What am I doing wrong?

4

1 回答 1

0

LoupingWidget没有布局,所以当它被添加到另一个布局时,布局不能根据它的内容调整它的大小。您需要QGridLayout在构造函数中创建另一个布局(例如)LoupingWidget,添加topGroupBox到布局并将布局设置为LoupingWidget' 布局。

于 2014-04-20T10:02:49.080 回答