将2d数组整数数据从c ++发送到qml [英] send 2d array integer data from c++ to qml
本文介绍了将2d数组整数数据从c ++发送到qml的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我一整天都在寻找,但这个问题让我感到很烦恼。
Ive been searching whole day, but this questions bothers me so much.
我创建一个游戏(类似于Lines)和im尝试保存网格状态(0 - 如果清除,> 0 - 如果存储一些球)。我在我的类中有一个槽:
Im creating a game (similar to "Lines") and im attempting to save the grid state (0 - if clear, > 0 - if stored some ball). I have a slot in my class:
int Game::getGridMap() {
return gameGridArray[9][9];
}
,然后:
onPressed: {
buttonStart.color = "#222333"
handleGame.initGame();
var aRect = handleGame.getGridMap();
}
但返回undefined
but it returns "undefined" or smth like that.
我做错了什么?
推荐答案
我找到了一个解决方案!
I've found a solution!
首先,我创建:
QList<int> getGridMap();
,然后从2维数组创建一个列表:
and then created a list from a 2 dimentional array:
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
oChildList.append(gameGridArray[i][j]);
}
}
这些值可以很方便地传递给QML。然后在qml中再次打开它:
This values can be easely passed to QML. and then just turned it again in 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;
}
这篇关于将2d数组整数数据从c ++发送到qml的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文