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 に答える