QuickControls2 Изображение не растягивается на всю ширину родительского - PullRequest
0 голосов
/ 18 октября 2018

У меня есть простой дизайн QuickControls2 QML, где изображение должно растягиваться горизонтально, чтобы заполнить окно приложения и сохранить его соотношение сторон.Но когда я запускаю свою программу, изображение не масштабируется / растягивается.

Проблема в том, что изображение меньше текущего размера окна, а QT не увеличивает / не увеличивает размеробраз?Есть ли параметр, чтобы QT изменял размер изображения, чтобы заполнить его ширину независимо от размера изображения?

Можете ли вы дать мне знать, что не так и как я могу это исправить?

import QtQuick 2.9
import QtQuick.Controls 2.2
import QtQuick.Layouts 1.3

ApplicationWindow {
    id: applicationWindow
    visible: true
    width: 640
    height: 480
    title: qsTr("Scroll")

    ColumnLayout {
        id: mainLayout
        anchors.fill: parent

        Image {
            id: imagePane
            Layout.fillWidth: true
            fillMode: Image.PreserveAspectFit
            source: "placeholder.jpg"
        }
    }
}

enter image description here

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Попробуйте это:

import QtQuick 2.9
import QtQuick.Controls 2.2
import QtQuick.Layouts 1.3

ApplicationWindow {
    id: applicationWindow
    visible: true
    width: 640
    height: 480
    title: qsTr("Scroll")

    ColumnLayout {
        id: mainLayout
        anchors.fill: parent

        Image {
            id: imagePane
            Layout.preferredWidth: parent.width
            Layout.preferredHeight: parent.height
            fillMode: Image.PreserveAspectFit
            source: "placeholder.jpg"
        }
    }
}
0 голосов
/ 18 октября 2018

Используя Image.PreserveAspectFit, изображение масштабируется равномерно, чтобы уместить его без кадрирования. , теперь, так как вы не заполняете высоту макета, изображение не может масштабироваться за пределами его неявной высоты.

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * НЕОБХОДИМО, чтобы изменило размер изображения, чтобы заполнить ширину ”, это означает, что вы соглашаетесь обрезать изображение сверх предела высоты. В этом случае вам необходимо использовать:

fillMode: Image.PreserveAspectCrop

enter image description here

...