我尝试动态添加一些项目到垂直布局,所以我创建了一个新的水平布局,添加了一个标签和按钮,然后使用addLayout将其添加到垂直布局,但它似乎没有正确发生。
如果我设置一个断点并通过'这个'对象的孩子,我找到了垂直布局对象,它有按钮和标签作为孩子 - 没有水平布局对象可见,但在GUI中,它被布置得像它在一个水平布局(是的,这里的命名约定很糟糕)。
QHBoxLayout *AA = new QHBoxLayout;
QLabel *BB = new QLabel;
QPushButton *CC = new QPushButton;
AA->addWidget(BB);
AA->addWidget(CC);
ui->verticalLayout->addLayout(AA);
然后我尝试从水平布局中删除按钮并删除水平布局并删除它们,但是根据我的操作方式,它要么不起作用,要么崩溃。
QHBoxLayout *a1 = ui->verticalLayout->layout()->findChild<QHBoxLayout*>();
QPushButton *a2 = ui->verticalLayout->findChild<QPushButton*>();
QPushButton *a3 = a1->findChild<QPushButton*>();
//(a2 and a3 are both null, a1 returns an object)
所以我的问题是如何动态地将项目添加到水平布局然后将其添加到现有布局,然后迭代这个以删除它们? (到目前为止,我在Qt中找到的一个不幸的事情是教程或者“动态布局如何完全缺乏”,我尝试过的大部分内容来自SO上的帖子。) / p>