任何类型的定位器都不适用于用户定义的元素

时间:2017-11-13 07:15:16

标签: qt user-interface qml qtquick2

有一个传感器元素的代码。它就像是其他传感器类型元素的基类:

Rectangle {
    property real value: 0

    property alias imageWidth: image.width
    property alias imageSource: image.source
    property alias displayWidth: display.width

    width: Math.max(image.width, display.width)
    height: image.height + display.height

    border.width: 1

    Rectangle {
        id: display
        width: 40
        height: 20
        border.width: 1
        color: "lightgreen"

        Text {
            anchors.centerIn: parent
            text: value
            font.pixelSize: parent.width * 0.3;
        }
    }

    Image {
        id: image
        width: display.width * 0.5
        anchors.top: display.bottom
        anchors.horizontalCenter: display.horizontalCenter
        source: "qrc:/images/temperature.png"
        fillMode: Image.PreserveAspectFit
    }
}

如果我将传感器放在Column中,它们就会正确定位。

派生类型的实现 - Pressure

Item {
    Sensor {
        imageSource: "qrc:/images/pressure.png"
        imageWidth: displayWidth * 0.4
    }
}

但如果我将Pressure传感器放在RowColumn中,则所有传感器都会相互重叠。

Column {
        spacing: 10
        Pressure {}
        Pressure {}
        Pressure {}
}

Pressures and Sensors comparison (image)

你能解释一下它有什么问题吗?

1 个答案:

答案 0 :(得分:0)

哦,似乎我自己找到了答案。

Items这样的派生类中的

Pressure没有自己的宽度和高度。如果我删除Item,它可以正常运行:

Sensor {
    imageSource: "qrc:/images/pressure.png"
    imageWidth: displayWidth * 0.4
}