从QtScript处理二维数组

时间:2015-05-07 07:55:41

标签: c++ qt qtscript

我想要一种能够从QtScript访问在我的主应用程序中创建的整数数组的方法,并且在执行脚本可能执行的任何操作之后再返回它。

到目前为止我能够工作的是单个值(例如整数或布尔值),我还没有看到我所描述的例子。

有没有办法做到这一点,或者我必须逐个阅读数据?

1 个答案:

答案 0 :(得分:0)

您可以尝试在QObject类中对二维数组进行封装,如下所示:http://doc.qt.io/qt-5/qtscript-index.html 并添加一些方法来操纵它。

类似的东西(没有测试代码,因此可能包含一些错误并且非常原始)

class MyArray: public QObject {
    int** m_array;
    public:
    Q_OBJECT
    MyArray(signed int x, signed int y) {
        m_array = new MyArray[x][y];
    }
    ~MyArray() { delete m_array; }

    Q_INVOKABLE int at(signed int x, signed int y) {
        if (m_array) return m_array[x][y];
    }
    ...
}

将其分配给QtScript属性:

MyArray *array2d = new MyArray(10, 5);
QScriptValue arrayValue = engine.newQObject(array2d);
engine.globalObject().setProperty("array2d", arrayValue);