【问题标题】:Exposing complex C++ Qt object to QML将复杂的 C++ Qt 对象暴露给 QML
【发布时间】:2014-12-04 18:05:13
【问题描述】:

在一个 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++ 发送到 QML。我这样做是否过于复杂?有没有其他方法可以做到这一点?

【问题讨论】:

  • 你到底想做什么?这里有问题吗?
  • 我的问题是:如何在 QML 中的二维数组中导航?
  • these 的答案对您有帮助吗?
  • @BaCaRoZzo 我会调查的。

标签: c++ qt qml blackberry-cascades


【解决方案1】:

在您向 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)

【讨论】:

  • 非常感谢您的回答! :)
猜你喜欢
  • 2017-01-16
  • 1970-01-01
  • 2021-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-01
  • 1970-01-01
  • 2021-03-16
相关资源
最近更新 更多