我試圖開發一款遊戲,但不僅與遊戲有關,而且與任何事情有關。 我的問題是:如何在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架構或某些東西。再次感謝您的幫助 –