Как получить доступ к текущему элементу ListView из qml
У меня есть приложение, которое хранит и редактирует заметки. Список заметок отображается в виде списка следующим образом:
Page {
id: noteList
title: i18n.tr("QNote")
visible: false
Column {
anchors.fill: parent
ListView {
anchors.fill: parent
model: notes
delegate: ListItem.Standard {
text: Title
onClicked: editNote(NoteText, Title, modelData);
progression: true
}
}
}
}
function editNote(text, title, item) {
pageStack.push(noteEdit, {title: title, text: text});
handler.setActiveItem(item);
}
Элемент notes - это NoteListModel, который подклассирует QAbstractListModel и содержит NoteListItems. Я хотел бы сохранить выбранный в настоящий момент NoteListItem, чтобы я мог легко получить доступ к объекту Note внутри, когда пользователь хочет сохранить измененную заметку. Однако я не знаю, как получить доступ к вспомогательному NoteListItem из делегата qml. Модель данных, кажется, что-то еще. Есть ли способ сделать это? Если бы я мог обернуть объект Note в QVariant, я мог бы легко получить к нему доступ через роли, но когда я попробовал это так
QVariant NoteListItem::data(int role) {
switch (role) {
case Title:
return note.getTitle();
case NoteText:
return note.getText();
case NoteObject:
return QVariant::fromValue(note);
default:
return QVariant();
}
}
это привело к ошибке компилятора
qmetatype.h: 642: ошибка: неправильное применение sizeof к неполному типу QStaticAssertFailure
Или я должен попытаться получить доступ к выбранному элементу списка из кода поддержки? Есть ли способ для этого? У тебя есть идеи?
Спасибо за ваше время. С уважением, Питер