【发布时间】:2013-04-29 16:22:26
【问题描述】:
我有一个存储和编辑笔记的应用程序。笔记列表显示在列表视图中,如下所示:
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 对象。但是,我不知道如何从 qml 委托访问支持的 NoteListItem。 modelData 似乎是别的东西。有什么办法吗?如果我可以将 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”的无效应用
或者我应该尝试从支持代码访问选定的列表项吗?有什么办法吗?你有什么想法吗?
感谢您的宝贵时间。问候, 彼得
【问题讨论】:
-
成功了,谢谢。
标签: qt qml qt5 qabstractitemmodel