QML(Qt 5):调整大小的图像左上角的叠加按钮

QML (Qt 5): Overlay button on top left corner of resized image

我有这个代码(减少到最小):

import QtQuick 2.0
import QtQuick.Controls 1.3

Item {
    Image {
        id: img
        source: "cluster.png"
        width: 150
        height: 150
        fillMode: Image.PreserveAspectFit
   }

   Button {
        id: butn
        anchors.left: img.left
        anchors.top: img.top
        width: 20
        height: 20
        text: "Push!"
   }
}

生成的图像类似于以下内容:

但是我想将按钮放在 resized 图片的左上角。

完整图片位于:http://susepaste.org/34762236

QML 可以吗?

您需要访问缩放图像的实际大小,以便有 paintedHeight property and paintedWidth

这将导致

Item {
    Image {
        id: img
        source: "cluster.png"
        width: 150
        height: 150
        fillMode: Image.PreserveAspectFit
    }

    Button {
        id: butn
        anchors.left: img.left
        anchors.top: img.top
        anchors.leftMargin: (img.width - img.paintedWidth)/2
        anchors.topMargin: (img.height - img.paintedHeight)/2
        width: 20
        height: 20
        text: "Push!"
    }
}

您也可以使用 xy 代替锚点和边距。