【发布时间】:2017-01-16 20:18:51
【问题描述】:
我正在尝试开发一款游戏,但不仅与游戏相关,还与任何事物相关。 我的问题是:您如何在 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++ 中的所有逻辑。
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 {...}
....
}
这基本上是处理与Unit相关的UI,但我再说一遍,所有的逻辑都将在c++中再次完成。
在前面提到的例子中,我希望,当我创建一个新单元时,它会直接出现在 QML 中。
怎么办?我真的很确定可以做到,而且我确定很简单,我只是没有发现。我不需要代码,只需要提示、参考或教程。
如果解决方案真的在我之前写的一封电子邮件中,我请你更详细地解释它,因为我仍然没有发现。
非常感谢!
【问题讨论】: