我应该采取什么方式使用 qt:all 类继承自 QObject 或删除 新后手动删除

What way should I take with qt:all classes inherit from QObject or delete Manually after new?

本文关键字:删除 QObject 继承 什么 方式使 all qt 我应该      更新时间:2023-10-16

有一些问题让我感到困惑:1.

QLabel *label = new QLabel(this);
//or
QLabel *label = new QLabel;
//if I forgot to set label as a child of other widget, it causing a memory leak?

阿拉伯数字。

QList<MyClass> myList;
MyClass *my = new MyClass;
myList.append(*my);
//is necessary?
delete my;

那么,我应该采取什么方式来使用qt呢?所有类都继承自 QObject 还是删除 新后手动?还是使用Qt智能指针?请帮助我,非常感谢...

如何在C++中分配对象取决于预期的生命周期,Qt不会改变这一点。所以,是的,在情况 1 中,第二个标签被泄露,因为它的生命周期与this无关

在 csae 2 中,您使用的是不必要的堆分配。只是写

{
  QList<MyClass> myList;
  MyClass my; // Local scope
  myList.append(my);
}

甚至更简洁:

{
  QList<MyClass> myList;
  myList.append( MyClass() ); // Unnamed object, can be moved into myList.
}