Не могу прочитать QStringList из функции QML / JavaScript

0

У меня есть класс QML, который имеет в нем функцию с QStringList в качестве параметра. Я могу получить доступ к другим элементам в модели C++ из QML.

В моем 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. С
Теги:
qt
qml

1 ответ

2
Лучший ответ

Я думаю, что это не вызов метода на myModel, вы передаете recentFiles все, что передается для invokable-метода в QML:

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

Вы хотите вызвать метод recentFiles:

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

Увы, если ваш список строк изменен и может измениться при отображении пользовательского интерфейса, вы должны просто использовать QStringListModel.

  • 0
    Doh! Я хотел бы, чтобы это привело к ошибке, подобной компиляции ... спасибо!
  • 0
    @ user1595510 Это все еще действительный код, ошибки нет, просто это не означает, что вы думаете, что это означает :) Конечно, вы можете проверять аргументы, но это полезно только в том случае, если вы делаете это везде.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню