Делегаты QML Repeater отображают правильно, но C ++ ViewModel getWord () возвращает неполный пустой - что мне не хватаетC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Делегаты QML Repeater отображают правильно, но C ++ ViewModel getWord () возвращает неполный пустой - что мне не хватает

Сообщение Anonymous »

Я работаю над приложением 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»