Я работаю над приложением 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
Делегаты QML Repeater отображают правильно, но C ++ ViewModel getWord () возвращает неполный пустой - что мне не хватает ⇐ C++
Программы на C++. Форум разработчиков
1758891528
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()
Подробнее здесь: [url]https://stackoverflow.com/questions/79775788/qml-repeater-delegates-display-correctly-but-c-viewmodel-getword-returns-inc[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия