Qt QObject автоматическая очистка памяти

282
04 ноября 2017, 14:55

Имеется класс:

 #include <QObject>
    class Item : public QObject{
        Q_OBJECT
    private:
        QString m_name;
        uint m_properties;
    public:
        explicit Item (QString _name, uint _properties, QObject *parent = 0);
        ~Item();
        Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
        QString name() const;
        void setName (QString name);
        Q_PROPERTY(uint properties READ properties WRITE setProperties NOTIFY propertiesChanged)
        uint properties() const;
        void setProperties(uint properties);
    signals:
        void nameChanged();
        void propertiesChanged();
    };

В другом классе есть метод, допустим он вызывается 10 раз:

void Create::addItem()
{
    QList <Item *> dataItem;
    dataItem << new Item ("name1",0) << new Item ("name2",0) <<
                new Item ("name3",0) << new Item ("name4",0) <<
                new Item ("name5",0) << new Item ("name6",0) <<
                new Item ("name7",0) << new Item ("name8",0) <<
                new Item ("name9",1);
    itemModel->addDataItem(dataItem);
}

В классе ItemModel есть метод, так же будет вызван 10 раз:

void ItemModel::addDataItem(QList<Item *>_data)
{
    dataItemList.append(_data);
}

В классе ItemModel переменная dataItemList объявлена как

QList<QList<Item *>> dataItemList;

В ней должно хранится 10 листов в кажлм из 10 по 9 объектов класса Item.

Так вот, в какой-то момент времени у объектов класса Item вызывается деструктор, и уже dataItemList указывает на освобождённую память. Как обойти данную проблему, чтобы Qt не удалял данные объекты, а удалил их я когда мне это будет нужно?

Огромное спасибо за разъяснения.

READ ALSO
Обработка сообщения о рисовании(WM_PAINT) в GLFW

Обработка сообщения о рисовании(WM_PAINT) в GLFW

Есть ли возможность в GLFW обработать сообщение WM_PAINT? Если да, то как? Нужно мне это для того, чтобы рисовать не в цикле, а по получению сообщенияНапример,...

247
redefinition; different basic types [требует правки]

redefinition; different basic types [требует правки]

Я не понимаю почему выскакивают эти ошибки помогите пожалуйста C2371 'IP_OPTION_INFORMATION': redefinition; different basic types C2371 'ICMP_ECHO_REPLY': redefinition; different basic types C2371 'IP_OPTION_INFORMATION':...

377
visual studio и перегрузка операторов

visual studio и перегрузка операторов

Вам нужен конструктор для класса pop, который принимает один параметр типа intВы в вашем return пытаетесь использовать именно его, но создать его...

340