Tôi có một QVBoxLayout bên trong một scrollArea. Tôi tự động thêm QFormLayout s.Xóa tất cả trẻ em khỏi QVBoxLayout
widgetTreeStruct* tree = new widgetTreeStruct(QString::number(numberOfGraphs));
QFormLayout* layout = tree->getTree(); // get QFormLayout
ui->verticalLayout_2->addLayout(layout); //add to the vertical layout
Tại một thời điểm, tôi cần xóa tất cả số QFormLayouts được thêm vào từ QVBoxLayout.
Tôi đã thử một số cách để thực hiện việc này.
- Sử dụng qDeleteAll()
qDeleteAll(ui->verticalLayout_2->children());
2.delete mục từng người một
QLayoutItem* child;
while((child = ui->verticalLayout_2->takeAt(0)) != 0)
{
if(child->widget() != 0)
{
delete child->widget();
}
delete child;
}
Nhưng không có gì xảy ra. Chỉ có điều là khi tôi cố gắng để thêm các mục vào QVBoxLayout một lần nữa các mục mới được thêm vào đầu của các mục được thêm trước đó.
Tôi cảm thấy rằng tôi phải vẽ lại, sơn lại, cập nhật, làm mới hoặc một cái gì đó. Tôi đã thử ui->verticalLayout_2->update();
nhưng không hoạt động đối với tôi.
Vì vậy, tôi nên làm gì?
Đây là, trên thực tế, * cách * chính xác để thực hiện. +1 –