将复杂的C ++ Qt对象暴露给QML

时间:2014-12-04 18:05:14

标签: c++ qt qml blackberry-cascades

在C ++文件中,我有一个QList<QStringList>*类型的对象,它应该是一个二维字符串数组。

目前,在C ++中,我能够做到这一点:

// this will display the QString value in the Console,
// where entries is of type QList<QStringList>*
qDebug() << "test: " << entries->at(0).at(0);

我知道如何将此对象公开给QML,但我如何能够在QML中导航/访问其功能?

main.qml中,我可以调用返回此对象的函数:

_app.getCalendar()

但我怎样才能导航它,就像上面的C ++代码一样?

编辑:我实际需要做的是从C ++发送二维String数组到QML。我是以一种过于复杂的方式做到这一点的吗?还有另一种方法可以实现这个目标吗?

1 个答案:

答案 0 :(得分:6)

在您向QML公开的类中定义INVOKABLE getter函数。

头:

class MyQmlClass : QObject
{
    Q_OBJECT

public:
    // ...

    Q_INVOKABLE QString getString(int y, int y);


    // ...
}

并在.cpp文件广告中实现它:

QString MyQmlClass::getString(int x, int y)
{
    return entries->at(x).at(y);
}

最后在QML中:

_app.getCalendar().getString(3, 4)