从QTScript操纵一个2D阵列

Manipulate a 2d array from QtScript

本文关键字:一个 2D 阵列 QTScript 操纵      更新时间:2023-10-16

我希望一种能够访问我的主应用程序中从qtscript中在某个地方创建的整数的方法再次。

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

有没有办法这样做的方法,否则我将不得不一一读取数据?

您可以尝试在qobject类中封装2D数组,如下所示:http://doc.qt.io/qt-5/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);