如何制作从 QML 获取可变数量参数的 Q_INVOKABLE 方法

Vla*_*mov 6 qt qml

众所周知,在 JavaScript 中,所有函数都可以接受任意数量的参数。在 Qt 中,您可以使用 Q_INVOKABLE 标记 QObject,其方法可从 QML 访问。例如:

class myObj: public QObject
{
    Q_OBJECT

//...

public slots:
    Q_INVOKABLE QJSValue myFunction(QJSValue value);

//...

};
Run Code Online (Sandbox Code Playgroud)

然后你可以从 JS 调用它:

(function(){
    //like this:
    var result = myObj.myFunction("test");
    //but also like this:
    var result2 = myObj.myFunction(1,2,3,4,5); //,6,7,8, ..., 9998, 9999
})();
Run Code Online (Sandbox Code Playgroud)

那么,如何在 C++ 端处理可变数量的参数?在 JS 方面,我们有“参数”对象。Q_INVOKABLE 方法是否有任何类似物?

xec*_*eco -1

您可以将QList<QVariant>其作为 C++ 函数的参数Q_INVOKABLE,并在 qml 端传递任何数组,例如["string", 1, 2, 3]. QVariant可转换为大多数基本数据类型。