以下のコードは正常に動作しています(Sylvainのおかげです)。スクロールするときのみ、ListViewの一番上の行がボタンの行を上書きします。何か案が ? –
import QtQuick 2.0
import Ubuntu.Components 0.1
MainView {
width: units.gu(60)
height: units.gu(60)
ListModel {
id: fruitModel
ListElement {
name: "Apple"
cost: 2.45
}
ListElement {
name: "Orange"
cost: 3.25
}
ListElement {
name: "Banana"
cost: 1.95
}
}
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")
}
}
Item {
anchors.top: buttonRow.bottom
ListView {
id: list
width: units.gu(18)
height: units.gu(3)
model: fruitModel
boundsBehavior: Flickable.StopAtBounds
delegate: Row {
Text { text: "Fruit: " + name }
Text { text: "Cost: $" + cost }
}
}
Scrollbar {
flickableItem: list
align: Qt.AlignTrailing
}
}
}
}
}
Flickable アイテムは、ドラッグしてフリックできる表面に子を配置し、子アイテムのビューをスクロールさせます。この動作は、ListViewやGridViewなど、多数の子アイテムを表示するように設計されたアイテムの基礎となります。
従来のユーザーインターフェイスでは、スクロールバーや矢印ボタンなどの標準コントロールを使用してビューをスクロールできます。状況によっては、マウスボタンを押したままカーソルを動かして、ビューを直接ドラッグすることもできます。タッチベースのユーザーインターフェイスでは、このドラッグアクションは多くの場合、ユーザーがビューへのタッチを停止した後もスクロールを続けるフリックアクションで補完されます。
Flickableはそのコンテンツを自動的にクリップしません。全画面アイテムとして使用されない場合は、clipプロパティをtrue
に設定することを検討する必要があります。
したがって、サンプルコードは次のようになります。
import QtQuick 2.0
import Ubuntu.Components 0.1
MainView {
width: units.gu(60)
height: units.gu(60)
ListModel {
id: fruitModel
ListElement {
name: "Apple"
cost: 2.45
}
ListElement {
name: "Orange"
cost: 3.25
}
ListElement {
name: "Banana"
cost: 1.95
}
}
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")
}
}
Item {
anchors.top: buttonRow.bottom
ListView {
id: list
clip: true
width: units.gu(18)
height: units.gu(3)
model: fruitModel
boundsBehavior: Flickable.StopAtBounds
delegate: Row {
Text { text: "Fruit: " + name }
Text { text: "Cost: $" + cost }
}
}
Scrollbar {
flickableItem: list
align: Qt.AlignTrailing
}
}
}
}
}