我一整天都在搜索,但这个问题让我很困扰。
我正在创建一个游戏(类似于“行”)并且我试图保存网格状态(0 - 如果清除,则> 0 - 如果存储了一些球)。我班上有一个插槽:
int Game::getGridMap() {
return gameGridArray[9][9];
}
然后:
onPressed: {
buttonStart.color = "#222333"
handleGame.initGame();
var aRect = handleGame.getGridMap();
}
但它返回“undefined”或类似的smth。
我在做错了什么?这是存储这些数据的更好方法吗?答案 0 :(得分:1)
我找到了解决方案!
首先,我创建了:
QList<int> getGridMap();
然后从2维数组中创建一个列表:
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
oChildList.append(gameGridArray[i][j]);
}
}
这个值可以很容易地传递给QML。然后在qml中重新打开它:
var aRect = create2DArray(9);
var aString = handleGame.getGridMap();
aRect = listToArray(aString);
function listToArray(arr) {
var arr2d = new create2DArray(9);
for (var i = 0; i < 9; i++) {
for (var j = 0; j < 9; j++) {
arr2d[i][j] = arr[i*9+j];
}
}
return arr2d;
}
function create2DArray(rows) {
var arr = [];
for (var i=0;i<rows;i++) {
arr[i] = [];
}
return arr;
}
答案 1 :(得分:-1)
你需要在游戏类头文件中定义getGridMap()之前放置“Q_INVOCABLE”。
例如,
Q_INVOCABLE int getGridMap();