Как объявить свойство списка в QML (для использования с Qt.labs.settings
в моем случае):
Settings {
property list recentFiles: []
}
Не работает. Я пробовал много других опций: list<string>
, string[]
и т.д. Нет, похоже, работает.
Как объявить свойство списка в QML (для использования с Qt.labs.settings
в моем случае):
Settings {
property list recentFiles: []
}
Не работает. Я пробовал много других опций: list<string>
, string[]
и т.д. Нет, похоже, работает.
Settings {
property var recentFiles: []
}
Список может хранить только объекты QML и не может содержать базовый тип Значения
строка - это базовый тип, поэтому вы не можете сохранить его в списке.
Для этого вам лучше использовать property var recentFiles
Так как вы спрашивали о свойстве list (ключевое слово list), то, похоже, работает следующий синтаксис:
property list<Rectangle> rectList: [
Rectangle { id: a; },
Rectangle { id: b; }
]
Rectangle { id: c }
Component.onCompleted: {
console.log("length: " + rectList.length)
rectList.push(c)
console.log("length: " + rectList.length)
}
Это напечатает
qml: length: 2
qml: length: 3
Но я вижу, что 'rectList' будет принимать также следующее:
MouseArea { id: mArea; }
..
rectList.push(mArea)
Что не имеет смысла. И предложение команды/автозаполнение не работает с этим синтаксисом в Qt Creator. Я предполагаю, что это какой-то устаревший синтаксис, который не должен использоваться в новых приложениях. Вместо этого вы должны использовать то, что было предложено другими ответами:
свойство var myList: []
Тогда вы получите лучшую поддержку от Qt Creator.
И документация для "list" гласит [1]:
"Список может хранить только объекты QML и не может содержать никаких значений базовых типов. (Чтобы хранить базовые типы в списке, используйте вместо этого тип var.)"
Таким образом, следующее не будет компилироваться:
property list<int> intList: []
Те же документы также говорят:
"Примечание. Тип списка не рекомендуется использовать в качестве типа для пользовательских свойств. Вместо этого следует использовать тип var для этой цели, поскольку списки, хранящиеся в типе var, можно обрабатывать с большей гибкостью из QML".