scrollArea内にQVBoxLayoutがあります。QFormLayoutを動的に追加します。
widgetTreeStruct* tree = new widgetTreeStruct(QString::number(numberOfGraphs));
QFormLayout* layout = tree->getTree(); // get QFormLayout
ui->verticalLayout_2->addLayout(layout); //add to the vertical layout
ある時点で、追加されたすべての QFormLayouts を QVBoxLayout から削除する必要があります。
これを行うためにいくつかの方法を試しました。
- qDeleteAll() の使用
qDeleteAll(ui->verticalLayout_2->children());
2.アイテムを1つずつ削除する
QLayoutItem* child;
while((child = ui->verticalLayout_2->takeAt(0)) != 0)
{
if(child->widget() != 0)
{
delete child->widget();
}
delete child;
}
しかし、何も起こりませんでした。QVBoxLayout にアイテムを再度追加しようとすると、以前に追加されたアイテムの上に新しいアイテムが追加されます。
再描画、再描画、更新、更新などを行う必要があると感じています。試してみui->verticalLayout_2->update();
ましたが、うまくいきませんでした。
それで、私は何をすべきですか?