从 QtScript 操作二维数组

Posted

技术标签:

【中文标题】从 QtScript 操作二维数组【英文标题】:Manipulate a 2d array from QtScript 【发布时间】:2015-05-07 07:55:40 【问题描述】:

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

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

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

【问题讨论】:

您是否尝试过将数组封装在 QOBJECT 中? 嗨@danielfranca,不,恐怕我还不知道该怎么做。 【参考方案1】:

您可以尝试将二维数组封装在 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);

【讨论】:

我会测试你的解决方案,这似乎是个好主意。在等待您的回答时,我最终做的是创建两个函数 int MainWindow::getValueAt(int x, int y)void setValueAt(int x, int y, int Val) 并将它们作为公共插槽添加到我的主类中,以便从脚本中访问它们。

以上是关于从 QtScript 操作二维数组的主要内容,如果未能解决你的问题,请参考以下文章

JS 数值操作 一维数组转二维数组快捷操作

一些Python中的二维数组的操作方法

牛客网——二维数组的查找

memcpy()对二维数组和二维指针操作的区别

从工作表将二维数组传递给 VBA/UDF 函数

c语言中如何通过二级指针来操作二维数组