0

我有一个小问题:我做了一个小程序,每次用户点击 QPushButon 时,都会用他的指针创建一个新对象,这是我的代码:

ajoute *az = new ajoute;
QVBoxLayout *layoutPrincipal = new QVBoxLayout;

问题是每个已创建的对象都具有相同的名称,所以如果我想删除一个对象,可能会出现错误?

PS:对不起我的英语不好,我是法国人

4

2 回答 2

2

问题是每个已创建的对象都具有相同的名称,所以如果我想删除一个对象,可能会出现错误?

似乎您正在创建一组动态分配的对象,而您不知道如何存储它们的指针。最简单的方法是使用 aQVector<ajoute*>并存储动态分配的对象:

QVector<ajoute*> v;

现在,每当您创建一个时,ajoute您只需执行以下操作:

v.push_back( new ajoute );

这将在向量(容器)的末尾添加指针。然后您可以通过执行以下操作按顺序访问它们:

v[0]; // first
v[1]; // second
v[2]; // third

显然,您可以将它们删除为:

delete v[0]; // example

请记住也要删除向量内的指针:

v.remove(0);
于 2013-07-17T13:06:42.017 回答
2

您的对象很可能在堆栈上,因此下一个实例不会“记住”前一个实例。需要更多代码来微调解释。

常见的解决方案包括:

  • 在您的班级中使用一个(或多个)属性并在创建之前删除
  • 使用 QSharedPointer 并重置指向的数据(因此实际上释放了先前的实例)
  • (Qt 方式)使对象成为“父 QObject”的子对象:当对象树的根被处理时,它将被级联删除。
于 2013-07-17T13:03:46.190 回答