Qt 奇数布局

Qt 奇数布局,qt,qlayout,qgridlayout,Qt,Qlayout,Qgridlayout,我得到了以下原始安排: 五个非标准尺寸的按钮w:400,h:300,按如下方式排列:四个方形模式,两个在顶部,两个在按钮处,紧密结合在一起,第五个按钮在中间,与其他四个按钮重叠。我想知道当我扩展、最大化和/或最小化窗口时,是否有任何布局gridlayout、表单布局等可以用来保持这种布局?感谢您的帮助。使用QGridLayout,尺寸为4x4。然后,让每个按钮使用2x2网格布局单元,您可以使用右侧。这里给出了2的列和行跨度。听起来像是一个家庭作业问题 我的第一种方法是在设置网格布局后,将第二个小

我得到了以下原始安排:


五个非标准尺寸的按钮w:400,h:300,按如下方式排列:四个方形模式,两个在顶部,两个在按钮处,紧密结合在一起,第五个按钮在中间,与其他四个按钮重叠。我想知道当我扩展、最大化和/或最小化窗口时,是否有任何布局gridlayout、表单布局等可以用来保持这种布局?感谢您的帮助。

使用QGridLayout,尺寸为4x4。然后,让每个按钮使用2x2网格布局单元,您可以使用右侧。这里给出了2的列和行跨度。

听起来像是一个家庭作业问题

我的第一种方法是在设置网格布局后,将第二个小部件作为第一个小部件的父部件。然后,您必须使用第一个小部件调整第二个小部件的大小。我过去也曾和你一起做过

@对于这个问题,海德的解决方案要优雅得多。我将所有内容都放在堆上,但是对于这样一个简单的应用程序,所有内容都可以放在堆栈上,而不是QWidget*w=newqwidget;=>qw

如果在调整网格大小时希望网格元素保持居中且没有间隙,请确保在外部添加缓冲区行/列,并为其设置拉伸值。像这样


希望能有所帮助。

谢谢您的回复。我会试试的,让你知道,我会试试的。谢谢
#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();
}