【问题标题】:ColumnLayout with images occupying only the minimum space in QMLColumnLayout,图像仅占用 QML 中的最小空间
【发布时间】:2020-04-13 14:44:39
【问题描述】:

我有一个ListViewColumnLayout 代表,其中包含任何大小的图像。我希望每个代表占据尽可能小的宽度和高度,只定义某个最大宽度,但我无法将图像调整到正确的大小,而不是在一个盒子中居中(这里用灰色矩形显示):

我的代码是这样的:

import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.Layouts 1.12

ApplicationWindow {
    id: window
    width: 640
    height: 800
    visible: true
    color: "black"

    ListView {
        id: listView
        anchors.fill: parent
        model: 3

        delegate: ColumnLayout {
            width: listView.width

            Label {
                text:
                    "Lorem ipsum dolor sit amet, consectetuer adipiscing " +
                    "Aenean commodo ligula eget dolor. Aenean massa."
                color: "white"
                wrapMode: Text.Wrap
                font.pixelSize: 22

                Layout.maximumWidth: listView.width / 2
            }

            Image {
                asynchronous: true
                source: "https://picsum.photos/1024/256"
                fillMode: Image.PreserveAspectFit

                Layout.maximumWidth: listView.width / 2

                Rectangle { anchors.fill: parent; color: "#222"; z: -1 }
            }
        }
    }
}

当使用Column 而不是ColumnLayout 并将Layout.maximumWidth 行替换为width: Math.min(implicitWidth, listView.width / 2) 时,我可以获得正确的行为,如下所示,但我需要在我的项目中使用布局:

【问题讨论】:

  • “大小合适”是什么意思?预期的行为是什么?
  • @Mitch 图片前后不能有空格。
  • 好的,因此您希望图像垂直填充其父级。您应该更新您的问题,使其更具体,因为目前还不是很清楚。

标签: qt listview layout qml qtquick2


【解决方案1】:

图片之前的空白是因为fillMode: Image.PreserveAspectFit,它试图保持图片的纵横比(即图片宽度/图片高度)。您应该使用fillmode: Stretch 来完全填满空间。

【讨论】:

  • 我需要适合的图像。如果我使用Column 而不是ColumnLayout,我会得到预期的行为,但是对于具有大量元素且我需要最小/首选/最大尺寸的接口,其他一切都会变得非常复杂。
  • 您已将列布局宽度设置为列表视图宽度的一半。所以你在右侧有空白区域。
  • @sana,除非您使用例如Stretch 或 PreserveAspectCrop 作为填充模式。您应该发布使用 Column 时获得的结果的图像(因为您说这显示了预期的行为)以避免混淆。
  • @Mitch 我添加了列结果
猜你喜欢
  • 1970-01-01
  • 2014-03-14
  • 2016-12-02
  • 1970-01-01
  • 2015-08-19
  • 1970-01-01
  • 2018-12-02
  • 1970-01-01
  • 2021-05-10
相关资源
最近更新 更多