在我当前的项目中,我有一个 QCheckBoxes 数组,它们是我在运行时根据用户的尺寸创建的。每次用户单击“生成”按钮时,都会收集他们输入的维度,并创建一个 QCheckBoxes 数组。它是在以下代码中完成的:
void MainWindow::on_generateBoxes_clicked()
{
int x_dim = ui->xDim->value();
int y_dim = ui->yDim->value();
int z_dim = ui->zDim->value();
for(int i = 0; i < x_dim; ++i){
for(int j = 0; j < y_dim; ++j){
checkBoxVector.append(new QCheckBox( ui->dim1 ));
checkBoxVector.last()->setGeometry(i * 20, j * 20, 20, 20);
}
}
}
checkBoxVector 是在另一个源文件中声明的全局指针数组:
QVector<QCheckBox*> checkBoxVector;
我的问题是,如何通过 checkBoxVector 删除每个 QCheckBox?由于数组的先前维度是局部变量,一旦函数返回就会丢失,当它被重新调用时我怎么知道要删除多少元素?
如果用户按下“生成”按钮两次,就会出现重叠的 QCheckBox,因此我需要在每次调用该函数时将它们全部删除。 (另外,没有人想要内存泄漏!)
最佳答案
首先删除vector中的所有元素(QCheckBoxes),然后清空vector:
qDeleteAll(checkBoxVector);
checkBoxVector.clear();
因为您正在向 vector 添加复选框指针,所以仅清除 vector 不会删除复选框。
关于c++ - 我如何使用指向每个元素的指针 vector 删除 QCheckBoxes 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6636963/