从 QtScript 操作二维数组
Manipulate a 2d array from QtScript
我想要一种能够从 QtScript 访问在我的主应用程序某处创建的整数数组的方法,并且在执行脚本可能执行的任何操作后 return 它再次返回。
到目前为止,我能够处理的是单个值(例如整数或布尔值),而且我还没有看到关于我所描述内容的示例。
有什么办法吗,要不我得一个一个读数据?
您可以尝试将二维数组封装在 QObject class 中,如下所示: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);
我想要一种能够从 QtScript 访问在我的主应用程序某处创建的整数数组的方法,并且在执行脚本可能执行的任何操作后 return 它再次返回。
到目前为止,我能够处理的是单个值(例如整数或布尔值),而且我还没有看到关于我所描述内容的示例。
有什么办法吗,要不我得一个一个读数据?
您可以尝试将二维数组封装在 QObject class 中,如下所示: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);