从自定义Label访问QML嵌套变量成员

时间:2016-02-22 10:53:09

标签: qt label qml

我有以下自定义Label

import QtQuick 2.3
import QtQuick.Controls 1.4

Label
{
    anchors.centerIn: parent
    text: "DashboardLabel!"
    font.pixelSize: 22
    font.italic: true
    color: "steelblue"

    Rectangle
    {
        id: rectangle
    }
}

我正试图通过访问rectangle中的x和y变量来更改标签的位置:

import QtQuick 2.3
import QtQuick.Controls 1.4
import CustomGraphics 1.0

Item
{
    anchors.centerIn: parent

    CustomLabel
    {
        id: customLabel
        width: 100
        height: 100

        rectangle.x: 200
    }
}

由于我的自定义Label未移动,因此似乎无法正常工作。我应该使用property功能吗?这是我得到的错误:

Cannot assign to non-existent property "rectangle"

编辑:我刚刚尝试添加property alias rect: rectangle,以便x访问rect.x。我没有收到任何错误,但窗口上没有任何错误。

1 个答案:

答案 0 :(得分:1)

您无法像这样访问子元素的私有属性。您必须创建alias以便子类访问它们。试试这个

import QtQuick 2.3
import QtQuick.Controls 1.4

Label
{
    property alias childRect: rectangle
    anchors.centerIn: parent
    text: "DashboardLabel!"
    font.pixelSize: 22
    font.italic: true
    color: "steelblue"

    Rectangle
    {
        id: rectangle
        width: 100
        height: 100
    }
}

然后

import QtQuick 2.3
import QtQuick.Controls 1.4
import CustomGraphics 1.0

Item
{
    anchors.centerIn: parent

    CustomLabel
    {
        id: customLabel
        width: 100
        height: 100

        childRec.x: 200
    }
}

UPDATE ,因为OP改变了描述

您尚未为矩形设置widthheight属性。看我的编辑。