создаю объект в QML. Но при обращении к свойствам через QML получаю мусор, такое чувство, что объект удален уже. Смотрел через qDebug вывод переменных. Инициализируется в конструкторе как надо, а когда доходит до получения данных - переменные возвращают уже какие-то левые значения. Объект создается с parent = 0, возможно по этой причине и удаляется. Возможно как-то задать parent при создании для него?
По описанию предположу, что объект выходит из области видимости и разрушается, так что, возможно, задание parent действительно поможет (объект будет удаляться родителем при вызове деструктора родителя), но нужен код, чтобы точнее сказать
покажи класс
#ifndef JAMMINGSTEPDESCRIPTION_H #define JAMMINGSTEPDESCRIPTION_H #include <QObject> #include <QDebug> class jammingStepDescription : public QObject { Q_OBJECT public: explicit jammingStepDescription(QObject *parent = nullptr); ~jammingStepDescription(); Q_PROPERTY(int stepType READ stepType WRITE setStepType NOTIFY stepTypeChanged); Q_PROPERTY(QString stepColor READ stepColor WRITE setStepColor NOTIFY stepColorChanged); int stepType(); void setStepType(int stepTypeVal); QString stepColor(); void setStepColor(QString stepColorVal); void setData(QByteArray data); QByteArray getData(void); QString m_stepColor; private: QByteArray stepData; bool stepIsValid; int m_stepType; signals: void stepTypeChanged(); void stepColorChanged(); }; #endif // JAMMINGSTEPDESCRIPTION_H
Нюанс в том, что если объект создан без parent в методе q_invokable, то им владеет QML engine. Вообщем, без кода можно только гадать.
А как создаётся обьект?
можно на гетере поставить брейкпоинты и узнаешь что храниться в классе вообще parent = 0 не должен просто так ломать
JammingStepDescription { id: jammingAddSaveStepDescription }
Тогда никаких удалений быть не должно, пока жив item, который владеет этим объектом
Тогда как ты решил, что в объекте мусор? Может нет инициации полей?
В конструкторе есть. Возможно с видимостью проблемы. Я обращался к объекту из дочернего QML объекта
Обсуждают сегодня