我正在制作有关 Sailfish OS 的电视指南,但目前遇到了一个障碍。因为我希望有可能为自定义列表标记每个条目,所以我需要修改后面的模型。我曾尝试直接修改模型:
model.favorite = true
但这不起作用。我试图修改底层
arrayOfObjects
,但这并没有反映在 UI 中,并且我无法触发更新,因为我无法访问 ListView。我曾尝试制作自定义模型,但由于我无法引用它的实例,因此无济于事。
下面是一个非常简化的布局表示,主要使用基本的 QML。
Page {
Flickable {
Column {
SlideshowView { // PathView
model: arrayOfObjects
delegate: channelDelegate
}
}
}
Component {
id: channelDelegate
ListView {
id: channelList
// ProgramModel just iterates thru arrayOfObjects and appends them
model: ProgramModel {
programs: arrayOfObjects
}
delegate: programDelegate
Component.onCompleted: {
// I can't reference channelList from here.
}
}
}
Component {
id: programDelegate
ListItem {
Button {
onClicked: {
// How do I reference channelList?
// Doing it by name doesn't work.
}
}
}
}
}
我曾尝试调用 ApplicationWindow (有效),以发送我在 channelList.onCompleted (也有效)中连接的信号,但由于我无法从那里引用列表,因此无济于事。
我在 QT 5.6 上,所以有些解决方案可能不起作用。而且我真的更喜欢保持纯 QML;没有 C++。