【问题标题】:Can't read QStringList from QML/JavaScript function无法从 QML/JavaScript 函数读取 QStringList
【发布时间】:2014-01-28 18:47:20
【问题描述】:

我有一个 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. 一个
  2. B
  3. C

【问题讨论】:

    标签: javascript c++ qt qml


    【解决方案1】:

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

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

    你想调用recentFiles方法:

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

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

    【讨论】:

    • 噢!我希望它会引发类似编译的错误...谢谢!
    • @user1595510 它仍然是有效代码,没有错误,它只是不代表您认为的意思:) 当然,您可以键入检查参数,但这只有在您到处做。
    猜你喜欢
    • 1970-01-01
    • 2015-09-27
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 2015-08-16
    相关资源
    最近更新 更多