我正在尝试使用Ubuntu SDK实现药物页面。 我正在尝试从SQL Lite数据库中获取数据并在加载页面时填充列表。 如果我使用带有文本和按钮的Row,我可以这样做,但如果我尝试使用ListItem则不行。
这有效:
page: Page {
id: drugPage
Component.onCompleted: {
var d = Drugs.getDrugs();
Drugs.fillDrugList(d);
}
Column {
id: lstDrugs
anchors {
top: parent.top
left: parent.left
right: parent.right
bottom: parent.bottom
margins: units.gu(2)
}
spacing: units.gu(2)
ListModel {
id: mdlDrugs
}
Component {
id: delDrugs
Row {
spacing: units.gu(6)
//width: parent.width
Text {
id: txtDrug
text: name
}
Text {
id: txtDose
text: dose
//width: units.gu(4)
}
Text {
id: txFrequency
text: frequency
}
}
}
ListView {
id: viewDrugs
model: mdlDrugs
delegate: delDrugs
height: parent.height
width: parent.width
}
}
}
但这不起作用:
page: Page {
id: drugPage
Component.onCompleted: {
var d = Drugs.getDrugs();
Drugs.fillDrugList(d);
}
Column {
id: lstDrugs
anchors {
top: parent.top
left: parent.left
right: parent.right
bottom: parent.bottom
margins: units.gu(2)
}
spacing: units.gu(2)
ListModel {
id: mdlDrugs
}
ListItem.Subtitled {
id: delDrugs
visible: true
width: parent.width
height: units.gu(5)
text: "Drug:" + name + " " + dose
subText: "Frequency: " + frequency
}
ListView {
id: viewDrugs
model: mdlDrugs
delegate: delDrugs
height: parent.height
width: parent.width
}
}
}
列表项目存在于ui中,但未填充数据。
我得到的错误是: ReferenceError:未定义名称 ReferenceError:未定义频率 我在这里错过了什么?
答案 0 :(得分:0)
我在QML文档中找到了答案: http://developer.ubuntu.com/api/qml/sdk-14.04/QtQml.ListModel/ 诀窍是将ListItem包装在Repeater中,就像这样。 ListView不是必需的。
ListModel {
id: mdlDrugs
}
Repeater {
model: mdlDrugs
ListItem.Subtitled {
text: "Drug:" + name + " " + dose
subText: "Frequency: " + frequency
}
}