Невозможно назначить double для QQuickAnchorLine - PullRequest
0 голосов
/ 02 ноября 2018

Я хочу разместить нижнее изображение чуть выше верхнего изображения. Но после добавления смещения к якору я получаю эту ошибку:

qrc:/Template.qml:21:22: Unable to assign double to QQuickAnchorLine

после добавления смещения 20 пикселей в этой строке:

anchors.top: top_bg.bottom-20

Как я могу сместить элемент, используя привязку в качестве контрольной точки?

import QtQuick 2.11
import QtQuick.Controls 2.4
import QtQuick.Layouts 1.11
import QtQuick.Dialogs 1.0
import QtQuick.Controls.Material 2.3

Item {
    id: root
    Image {
        id: top_bg
        source: "qrc:/images/top_bg.png"
        anchors.top: parent.top
        anchors.left: parent.left
        anchors.right: parent.right
        height: root.height*0.33
        fillMode: Image.PreserveAspectCrop
    }
    Image {
        id: map_bg
        source: "qrc:/images/map_bg.png"
        anchors.top: top_bg.bottom-20
        anchors.left: parent.left
        anchors.right: parent.right
        anchors.bottom: parent.bottom
        fillMode: Image.PreserveAspectCrop

    }
}

1 Ответ

0 голосов
/ 02 ноября 2018

Якоря - это не числовые позиции, а позиции относительно элемента, их нельзя сложить или вычесть, в вашем случае вы должны использовать свойства y и height:

Image {
    id: map_bg
    source: "qrc:/images/map_bg.png"
    y: top_bg.y + top_bg.height - 20 // <---
    anchors.left: parent.left
    anchors.right: parent.right
    anchors.bottom: parent.bottom
    fillMode: Image.PreserveAspectCrop
}

Другой вариант - использовать поля:

Image {
    id: map_bg
    source: "qrc:/images/map_bg.png"
    anchors.top: top_bg.bottom
    anchors.topMargin: -20
    anchors.left: parent.left
    anchors.right: parent.right
    anchors.bottom: parent.bottom
    fillMode: Image.PreserveAspectCrop
}
...