将2d数组整数数据从c ++发送到qml [英] send 2d array integer data from c++ to qml

查看:271
本文介绍了将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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆