【发布时间】:2015-08-19 19:47:45
【问题描述】:
我正在尝试围绕 ColumnLayout 创建滚动视图,不幸的是我当前的代码不起作用。我知道 ListView,但就我而言,我需要创建可滚动的 Layout,因为它会包含异构元素。
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
}
}
}
}
这会渲染成这个(这显然不是我想要的):
有两个问题:
- 图像不会拉伸到整个窗口宽度,parent.width 会被忽略。我希望图像的宽度与 ScrollView 完全相同(无水平滚动)
- 图像高度属性被忽略
我做错了什么?
【问题讨论】:
-
布局的感觉是自动定位和调整元素大小。阅读更多here。您可以使用Layout.fillWidth 或Layout.fillHeight 将项目拉伸到宽度或高度。或者,可以设置Layout.preferred{Width,Height}。你也想念
heightColumnLayout的属性。 -
@folibis 获得了一些不错的分数。您也可以在图片上使用
sourceSize来强制调整大小(即sourceSize.width: parent.width)。问题是ScrollView不应该这样使用。您可以使用自定义垂直滚动条装饰Flickable或切换到Flickable(滚动条代码参见here)。