在下面的代码中,我有 2 行。第一行中有按钮,第二行中有 ListView。为什么它们在显示中被覆盖,出了什么问题?
import QtQuick 2.0
import Ubuntu.Components 0.1
Page {
id: test
Column {
spacing: units.gu(1)
id: pageLayout
anchors {
margins: units.gu(2)
fill: parent
}
Row {
spacing: units.gu(1)
Button {
objectName: "button1"
color: "white"
text: i18n.tr("Help")
}
Button {
objectName: "button2"
color: "black"
text: i18n.tr("Search")
}
}
Row {
id: listarea
spacing: units.gu(1)
anchors.fill: parent
ListModel {
id: fruitModel
ListElement {
name: "Apple"
cost: 2.45
}
ListElement {
name: "Orange"
cost: 3.25
}
ListElement {
name: "Banana"
cost: 1.95
}
}
ListView {
anchors.fill: parent
model: fruitModel
delegate: Row {
Text { text: "Fruit: " + name }
Text { text: "Cost: $" + cost }
}
}
}
}
}
答案1
在您的情况下,您需要使用以下命令指定第二行位于第一行下方:
anchors.top: buttonRow.bottom
listarea
我还通过根据列表中元素的数量计算高度修改了呈现 ListView 的方式。
最终的 QML 代码如下,包含在其中,Mainview
以便可以进行测试qmlscene
:
import QtQuick 2.0
import Ubuntu.Components 0.1
MainView {
width: units.gu(60)
height: units.gu(60)
Page {
id: test
Column {
spacing: units.gu(1)
id: pageLayout
anchors {
margins: units.gu(2)
fill: parent
}
Row {
id: buttonRow
spacing: units.gu(1)
Button {
objectName: "button1"
color: "white"
text: i18n.tr("Help")
}
Button {
objectName: "button2"
color: "black"
text: i18n.tr("Search")
}
}
Row {
id: listarea
spacing: units.gu(1)
anchors.top: buttonRow.bottom
height: myList.count * units.gu(2)
ListModel {
id: fruitModel
ListElement {
name: "Apple"
cost: 2.45
}
ListElement {
name: "Orange"
cost: 3.25
}
ListElement {
name: "Banana"
cost: 1.95
}
}
ListView {
id: myList
anchors.fill: parent
model: fruitModel
delegate: Row {
Text { text: "Fruit: " + name }
Text { text: "Cost: $" + cost }
}
}
}
}
}
}