QML 滚动视图与 ColumnLayout
QML ScrollView with ColumnLayout
我正在尝试围绕 ColumnLayout 创建滚动视图,不幸的是我当前的代码不起作用。我知道 ListView,但在我的例子中,我需要创建可滚动的布局,因为它将包含异构元素。
ApplicationWindow {
id: mainwindow
title: qsTr("Hello World")
width: 300
height: 300
visible: true
ScrollView {
anchors.fill: parent
ColumnLayout {
width: mainwindow.width
Image {
anchors.bottomMargin: 10
source: "img/button.jpg"
width: parent.width
height: 400
}
Image {
source: "img/button.jpg"
width: parent.width
height: 500
}
}
}
}
这样渲染(这显然不是我想要的):
有两个问题:
- 图像没有拉伸到整个 window 宽度,parent.width 被忽略。我希望图像具有与 ScrollView 完全相同的宽度(无水平滚动)
- 图像高度 属性 被忽略
我做错了什么?
我会使用普通列并直接通过 id 访问所需的宽度 属性。据我了解,这些容器元素根据其内容测量其大小,这可能是设置 ColumnLayouts 宽度无效的原因。
这对我有用:
ScrollView
{
anchors.fill: parent
Column {
Repeater {
model: 4;
delegate: Item {
width: root.width;
height: image.sourceSize.height;
Image {
id: image;
anchors.centerIn: parent;
width: parent.width;
fillMode: Image.Stretch;
source: "img" + (index+1) + ".png"
}
}
}
}
}
在我的例子中,root 只是 parent 的 ID。希望这对您有所帮助!
我这边也有同样的问题。这对我有用:
ScrollView {
width: parent.width
height : parent.height
contentWidth: column.width // The important part
contentHeight: column.height // Same
clip : true // Prevent drawing column outside the scrollview borders
Column {
id: column
width: parent.width
// Your items here
}
}
我正在尝试围绕 ColumnLayout 创建滚动视图,不幸的是我当前的代码不起作用。我知道 ListView,但在我的例子中,我需要创建可滚动的布局,因为它将包含异构元素。
ApplicationWindow {
id: mainwindow
title: qsTr("Hello World")
width: 300
height: 300
visible: true
ScrollView {
anchors.fill: parent
ColumnLayout {
width: mainwindow.width
Image {
anchors.bottomMargin: 10
source: "img/button.jpg"
width: parent.width
height: 400
}
Image {
source: "img/button.jpg"
width: parent.width
height: 500
}
}
}
}
这样渲染(这显然不是我想要的):
有两个问题:
- 图像没有拉伸到整个 window 宽度,parent.width 被忽略。我希望图像具有与 ScrollView 完全相同的宽度(无水平滚动)
- 图像高度 属性 被忽略
我做错了什么?
我会使用普通列并直接通过 id 访问所需的宽度 属性。据我了解,这些容器元素根据其内容测量其大小,这可能是设置 ColumnLayouts 宽度无效的原因。
这对我有用:
ScrollView
{
anchors.fill: parent
Column {
Repeater {
model: 4;
delegate: Item {
width: root.width;
height: image.sourceSize.height;
Image {
id: image;
anchors.centerIn: parent;
width: parent.width;
fillMode: Image.Stretch;
source: "img" + (index+1) + ".png"
}
}
}
}
}
在我的例子中,root 只是 parent 的 ID。希望这对您有所帮助!
我这边也有同样的问题。这对我有用:
ScrollView {
width: parent.width
height : parent.height
contentWidth: column.width // The important part
contentHeight: column.height // Same
clip : true // Prevent drawing column outside the scrollview borders
Column {
id: column
width: parent.width
// Your items here
}
}