Виджеты Qt размещены неправильно
Я подкласс 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);
}
Когда эти две строки закомментированы, два виджета располагаются горизонтально. И это хорошо, но когда я раскомментирую строки с другим QGraphicsViews, он заполняет все окно.
Что я делаю неправильно?
1 ответ
Решение
LoupingWidget
не имеет макета, поэтому при добавлении в другой макет макет не может изменить его размер в соответствии с его содержимым. Вам нужно создать другой макет (например, QGridLayout
) в LoupingWidget
конструктор, добавить topGroupBox
к макету и установите макет как LoupingWidget
макет.