LINUX.ORG.RU

История изменений

Исправление dib2, (текущая версия) :

проблема состоит в том, что при изменении свойства в QML пользователем его значение не меняется в C++

ну так сделай кеширующий прокси, что-то типа

#define MYPROP(pType, pName, pDefault) \
    public: void pName(const pType& pVal) { m_##pName = QVariant::fromValue(pVal); settings.setValue("pName", m_##pName); emit pName##Changed(); }\
    public: pType pName() const { if (!m_##pName.isValid()) m_##pName = settings.value("pName", pDefault); return m##_pName.value<pType>(); } \
    private: QVariant m_##pName; \
    Q_SIGNAL void pName##Changed(); \
    Q_PROPERTY(pType pName READ pName WRITE pName NOTIFY pName##Changed) \
    private:

class MySettings : public QObject {
    Q_OBJECT

    MYPROP(QString, testProp1, "")
    MYPROP(int, testProp2, "")
    QSettings settings;
};

зы. не компилил, может быть с ошибками. просто для примера

Исходная версия dib2, :

проблема состоит в том, что при изменении свойства в QML пользователем его значение не меняется в C++

ну так сделай кеширующий прокси, что-то типа

#define MYPROP(pType, pName, pDefault) \
    public: void pName(const pType& pVal) { m_##pName = QVariant::fromValue(pVal); settings.setValue("pName", m_##pName); emit pName##Changed(); }\
    public: pType pName() const { if (!m_##pName.isValid()) m_##pName = settings.value("pName", pDefault); return m##_pName.value<pType>(); } \
    private: QVariant m_##pName; \
    Q_SIGNAL void pName##Changed(); \
    Q_PROPERTY(pType pName READ pName WRITE pName NOTIFY pName##Changed) \
    private:

class MySettings : public QObject {
    Q_OBJECT

    MYPROP(QString, testProp1, "")
    MYPROP(int, testProp2, "")
    QSettings settings;
};