Im пытается разработать игру, но не только связан с игрой, но и чем угодно. Мой вопрос: Как вы создаете/удаляете/управляете объектами на C++, и они появляются/исчезают/меняются в qml?Qt создать объект в C++ и выставить QML
Я знаю, что многие пользователи говорят мне читать
http://doc.qt.io/qt-4.8/qtbinding.html
http://doc.qt.io/qt-5/qtqml-cppintegration-contextproperties.html
http://doc.qt.io/qt-5/qtqml-cppintegration-interactqmlfromcpp.html
http://doc.qt.io/qt-5/qtqml-cppintegration-exposecppattributes.html
и так далее ...
Я прочитал их все. Я знаю, как использовать его так или иначе, как пример изменения числа, который является свойством и его подвергает QML, поэтому он автоматически изменяется, но это не мой вопрос.
Давайте поставим простой код, например
class Unit {
int posX, posY;
int energy;
void move()...
void create()...
void kill()
}
Тогда мы будем реализовывать всю логику в C++ внутри основного и всех необходимых subclases.
Game.cpp
class Game {
QList<Unit> listUnits;
moveUnits() {
for (int i = 0; i < units.size(); i++){
Unit unit;
unit.move();
}
createNewUnit(){
Unit unit = new Unit();
listUnits.append(unit);
}
}
On the other side will have Unit.qml
Item{
property int posX;
property int posY;
Animation on X {...}
....
}
что в основном для обработки пользовательского интерфейса, связанный с блоком, но я повторяю, вся логика будет сделано еще раз в C++.
В приведенном выше примере, я хочу, когда я создам новый модуль, это будет отображаться непосредственно внутри QML.
Как это сделать? Im действительно уверен, что можно сделать, и я уверен, что это довольно просто, я просто не узнал. Мне не нужен код, просто подсказка, ссылка или учебник.
В случае, если решение действительно находится на одном из писем, которые я написал ранее, я прошу вас объяснить это более подробно, потому что я до сих пор не узнал.
Большое спасибо!
Это пункт. Все это я знаю уже. Моя проблема, например, когда я создаю новый элемент, мне нужно будет отправить сигнал до qml, чтобы создать связанный объект qml, связанный с этим объектом. I –
Извините, я не совсем понимаю, о чем вы спрашиваете. Не использует ли метод addComponent() то, что вы спрашиваете? – faraza
Извините, я не объяснял так хорошо, как должен. Я пытаюсь достичь этой архитектуры, где я создаю объекты в C++, и это визуальное представление объектов - это QML. Метод addComponent() создает объект из QML, отличный от его создания из C++. Кроме того, как только этот объект создается, как ссылка объекта на C++. В конце моя цель состоит в том, чтобы иметь в C++ логику, а в QML - UI/Visual. Возможно, я не правильно использую архитектуру QML или что-то подобное. Еще раз спасибо за помощь –