I have a Model that exposes some properties like that:
class KeyValueModel : public QObject
{
Q_PROPERTY(QVariant key READ key WRITE setKey NOTIFY keyChanged)
Q_PROPERTY(QString value READ value WRITE setValue NOTIFY valueChanged)
Q_OBJECT
public:
KeyValueModel(const QVariant& key, const QString& value);
QVariant key() const { return m_key; }
void setKey(const QVariant& key) { m_key = key; emit keyChanged(); }
QString value() const { return m_value; }
void setValue(const QString& value) { m_value = value; emit valueChanged(); }
signals:
void keyChanged();
void valueChanged();
private:
QVariant m_key;
QString m_value;
};
Then I have a proxy that exposes a QList<KeyValueModel*> like that:
class Proxy : public QObject
{
Q_OBJECT
Q_PROPERTY(QList<KeyValueModel*> data READ data NOTIFY dataChanged)
public:
Proxy();
void setData(const QList<KeyValueModel*>& data) { m_data = data; emit dataChanged(); }
Q_INVOKABLE void changeData(); //this function call setData(new objects)
signals:
void dataChanged();
private:
const QList<KeyValueModel*> data();
private:
QList<KeyValueModel*> m_data;
};
When should I delete m_data?
If I delete the old data in setData() before notifying qml that data has changed qml points to delete objects and the app can crash, is it right?
Can i save m_data like QList<QSharedPointer<KeyValueModel>> m_data?