История изменений
Исправление 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;
};