无法从QML / JavaScript函数中读取QStringList

时间:2014-01-28 18:47:21

标签: javascript c++ qt qml

我有一个QML类,其中有一个函数,QStringList作为参数。我可以从QML中访问C ++模型中的其他项目。

在我的QML中:

function recentFiles(recentFilesList)
{
    //This writes "0" for some reason, although it should be "3"
    console.log(recentFilesList.length)

    //Causes error: "Unable to assign [undefined] to QString"
    return recentFilesList[0]
}

...

Text {
    text: recentFiles(rootObject.myModel.recentFiles)
}

在我的源文件中:

QStringList someModel::recentFiles() const
{
    QStringList recentFiles;

    recentFiles << "A" << "B" << "C";

    return recentFiles;
}

在我的标题文件中:

Q_INVOKABLE QStringList recentFiles() const;

最终,我正在尝试让我的QStringList处理一个QML ListView对象,它将显示如下:

  1. A
  2. C

1 个答案:

答案 0 :(得分:2)

我认为这不是myModel上的方法调用,您在QML中为可调用方法包装器传递recentFiles任何传递:

Text {
    text: recentFiles(rootObject.myModel.recentFiles)
}

您想要调用recentFiles方法:

Text {
    //                                              vv !
    text: recentFiles(rootObject.myModel.recentFiles())
}

唉,如果您的字符串列表是可变的并且可以在显示UI时更改,那么您应该只使用QStringListModel