Как изменить свойство контекста из c++?

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

_core->engine()->rootContext()->setContextProperty("currentZoneProperty", new CurrentZoneProperty);

Где CurrentZoneProperty следующий класс

class CurrentZoneProperty final : public QObject
{
Q_OBJECT
Q_PROPERTY(QString currentName READ currentName WRITE setCurrentName NOTIFY currentNameChanged)

public:
QString currentName() noexcept;
void setCurrentName(const QString &currentName) noexcept;

Q_SIGNAL void currentNameChanged();

private:
QString _currentName;
};

Как я могу из другой части кода c++ могу обратиться к текущему свойству и изменить его свойство currentName? Из части qml это понятно, я там сразу вызываю обработку, но мне нужно именно прям из другой части c++...


Ответы (1 шт):

Автор решения: Croessmah

Вы можете сохранить указатель на передаваемый в QML объект, и вызывать его функции-члены непосредственно из C++. Также Вы можете запросить свойство с помощью contextProperty и получить QVariant с нужным Вам свойством.

Не забывайте, что установка свойства через setContextProperty не передает владение объектом в QML. Это значит, что в Вашем случае созданный динамический объект типа CurrentZoneProperty в результате никто не удалит, если Вы сами об этом не позаботитесь.

→ Ссылка