我试图开发一款游戏,但不仅与游戏有关,而且与任何事情有关。 我的问题是:如何在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中。
怎么办?我真的很有把握可以完成,我确定很简单,我只是没有发现。我不需要代码,只需提示,或参考或教程。
如果解决方案真的出现在我之前写过的其中一封电子邮件上,我请您更详细地解释它,因为我还没有发现。
非常感谢!
那就是要点。这一切我已经知道了。我的问题是,例如,当我创建一个新元素时,我需要发送一个信号直到qml,以创建与该对象关联的关联qml对象。我 –
对不起,我真的不明白你在问什么。 addComponent()方法不会做你所问的东西吗? – faraza
对不起,我没有解释我应该如此好。我试图实现这个架构,我在C++中创建对象,这个对象的可视化表示是一个QML。 addComponent()方法从QML创建对象,与从C++创建对象不同。另外,一旦创建了该对象,如何将该对象引用到C++中。最后,我的目标是在C++中使用逻辑,在QML中使用UI/Visual。也许我没有正确使用QML架构或某些东西。再次感谢您的帮助 –