(звучит как домашнее задание вопрос.)
Мой первый подход, чтобы просто родителю второй виджет первого виджета после установки макета сетки. Затем вы должны получить второй виджет для изменения размера с первым. Я делал это в прошлом с pop up dialogs in iOS.
@ Решение hyde намного более изящно подходит для решения проблемы. Я поместил все в кучу, но для такого простого приложения все можно было положить в стек вместо этого (QWidget * w = new QWidget();
=>QWidget w;
).
#include <QApplication>
#include <QWidget>
#include <QGridLayout>
#include <QPushButton>
#include <QList>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget * w = new QWidget();
QGridLayout * grid = new QGridLayout();
QList <QPushButton *> buttons;
for(int i = 0; i< 5; i++)
{
buttons.append(new QPushButton("Button "+ QString::number(i+1)));
buttons.last()->setFixedSize(400, 300);
}
grid->addWidget(buttons.at(0),0,0,2,2);// upper left
grid->addWidget(buttons.at(1),0,2,2,2);// upper right
grid->addWidget(buttons.at(2),2,0,2,2);// lower left
grid->addWidget(buttons.at(3),2,2,2,2);// lower right
grid->addWidget(buttons.at(4),1,1,2,2);// centered
w->setLayout(grid);
w->show();
return a.exec();
}
Если вы хотите элементы сетки, чтобы оставаться в центре и не имеют пробелы, когда вы отрегулировать размер сетки, убедитесь, что вы добавить буфера строк/COL вокруг снаружи, и установите значение растягивания для них. Как в этом example.
Надеюсь, что это поможет.
Я попробую. Спасибо – guilhermemfreire