Я хочу изменить текст объекта QML во время выполнения.
Я попробовал это следующим образом, но текст остается пустым.
Это класс BackEnd:
class BackEnd : public QObject {
Q_OBJECT
Q_PROPERTY(QString userFieldText READ userFieldText WRITE setUserFieldText)
public:
explicit BackEnd(QObject *parent = nullptr);
QString userFieldText();
void setUserFieldText(QString &username);
private:
QString _userFieldText;
};
В файле qml я включаю window.backend, создаю новый экземпляр BackEnd и пытаюсь получить доступ к таким значениям, как
BackEnd {
id: backend
}
Text {
...
text: backend.userFieldText
}
Я регистрирую класс вот так.
qmlRegisterType<BackEnd>("window.backend", 0, 1, "BackEnd");
В отдельном потоке, где я хотел бы изменить объекты, я создаю экземпляр класса BackEnd и вызываю функцию setter.
BackEnd backend;
QString user("set by backend");
backend.setUserFieldText(user);
Компиляция работает, запускается, но ничего не меняет.
Я уже пытался поместить его в таймер в коде QML и обновлять его каждую секунду, но, похоже, ничего не работает.