Qt 添加到网格布局中的QWidget被放置为一个垂直布局

Qt 添加到网格布局中的QWidget被放置为一个垂直布局,qt,qwidget,qlayout,Qt,Qwidget,Qlayout,我正在构建一个应用程序,其中包含一个开始为空的滚动区域。然后,在用户请求时,可以包括无限数量的不同WidGTE。由于小部件不大,我希望将它们放置在网格中,按行和列进行组织。理想情况下,这些行将从右到左、从上到下填充 我希望它们像下图一样放置,其中数字表示它们的添加顺序: 然而,我得到的是: 我现在做的是: QWidget *w1 = new QWidget(this); ui->layout_output_grid->addWidget(w1); QWidget *w2 = ne

我正在构建一个应用程序,其中包含一个开始为空的滚动区域。然后,在用户请求时,可以包括无限数量的不同WidGTE。由于小部件不大,我希望将它们放置在网格中,按行和列进行组织。理想情况下,这些行将从右到左、从上到下填充

我希望它们像下图一样放置,其中数字表示它们的添加顺序:

然而,我得到的是:

我现在做的是:

QWidget *w1 = new QWidget(this);
ui->layout_output_grid->addWidget(w1);
QWidget *w2 = new QWidget(this);
ui->layout_output_grid->addWidget(w2);
QWidget *w3 = new QWidget(this);
ui->layout_output_grid->addWidget(w3);
QWidget *w4 = new QWidget(this);
ui->layout_output_grid->addWidget(w4);
QWidget *w5 = new QWidget(this);
ui->layout_output_grid->addWidget(w5);
  • 在ui文件中,我有一个包含网格布局的滚动区域,设置如下:

  • 在代码中,我添加了小部件。我实际上在使用自己的小部件类,但过程如下:

    QWidget *w1 = new QWidget(this);
    ui->layout_output_grid->addWidget(w1);
    QWidget *w2 = new QWidget(this);
    ui->layout_output_grid->addWidget(w2);
    QWidget *w3 = new QWidget(this);
    ui->layout_output_grid->addWidget(w3);
    QWidget *w4 = new QWidget(this);
    ui->layout_output_grid->addWidget(w4);
    QWidget *w5 = new QWidget(this);
    ui->layout_output_grid->addWidget(w5);
    
  • 问题

    有没有办法做到这一点?
    作为一种解决方法,我假设我可以对添加的小部件进行计数,并将行实现为不同的水平布局,但我想知道是否有一种解决方案可以让Qt以我想要的方式放置小部件?

    您可以指定要添加的小部件(1,2,3,4,5)必须占用的行、列和行/列

    查找此重载函数:

    在这种情况下,您应该执行以下操作:

    QWidget *w1 = new QWidget(this);
    ui->layout_output_grid->addWidget(w1, 0, 0, 1, 1);
    QWidget *w2 = new QWidget(this);
    ui->layout_output_grid->addWidget(w2, 0, 1, 1, 2);
    QWidget *w3 = new QWidget(this);
    ui->layout_output_grid->addWidget(w3, 1, 0, 1, 1);
    QWidget *w4 = new QWidget(this);
    ui->layout_output_grid->addWidget(w4, 1, 1, 1, 1);
    QWidget *w5 = new QWidget(this);
    ui->layout_output_grid->addWidget(w5, 1, 2, 1, 1);
    

    这对我帮助很大!然而,理想情况下,我不需要记录添加的小部件数量和它们的大小?