Я работаю над приложением Qul /QT Quick UltraLite (нацеливающееся на ESP32, используя QUL 2.9.0), где я имею: < /p>
a excecumeelectors.qml, который использует репутатор для рендеринга подкомпонентов с несколькими символами. (C ++ / QUL View-Model) с методом getWord (), который должен объединить в данный момент выбранные символы от каждого избирателя. и Setter SetChar (int index, const std :: string & data) < /p>
< /li>
из журналов (через монитор idf.py), я вижу, что когда я выбираю отдельные символы, эти компоненты делегируются и происходит некоторое регистрацию. Однако, когда я называю getWord () из виртуальной машины, возвращаемое слово является неполным (часто пустое). < /P>
< /li>
< /ul>
ниже упрощенные /обрезанные, но репрезентативные версии моего кода .qml и c ++. Я надеюсь, что кто -то сможет найти то, что я делаю не так, или предложить лучшую шаблон.import QtQuick 2.15
import QtQuick.Controls 2.15
import Constants 1.0
import "../BaseControl"
Row {
id: root
spacing: 10
property string currentWord: ""
TextEditVM {
id: textEditVM
Component.onCompleted: {
textEditVM.init(5)
}
}
Repeater {
id: repeater
model: 5
CharacterSelector {
property int index: 0
property string chararcter: " "
onSelectedCharChanged: {
chararcter = selectedChar;
if (selectedChar !== "") {
console.log("CharacterSelectors - Setting char at index", index, "to", selectedChar)
textEditVM.setChar(index, selectedChar)
// Force update the currentWord property
root.currentWord = textEditVM.getWord()
}
}
}
}
function getWord() : string {
return textEditVM.getWord();
}
}
< /code>
(также есть некоторые родительские коды QML или C ++, который создает символические знания, пропускает TextedItvm как VM и т. Д.)#pragma once
#include
#include
#include
class TextEditVM : public QObject {
Q_OBJECT
Q_PROPERTY(QString word READ getWord WRITE setWord NOTIFY wordChanged)
public:
explicit TextEditVM(QObject *parent = nullptr);
QString getWord() const;
void setWord(const QString &w);
signals:
void wordChanged();
private:
QString m_word;
};
< /code>
xtext_edit_vm.cpp
#include "text_edit_vm.h"
#include
TextEditVM::TextEditVM(QObject *parent) : QObject(parent), m_word("") {
qDebug()
Подробнее здесь: https://stackoverflow.com/questions/797 ... eturns-inc