QML(Cascades) - 将容器插入位置

时间:2013-11-20 09:13:49

标签: qt qml blackberry-10 blackberry-cascades

Cascades,10.2 SDK

MyCustomContainer.qml:

import bb.cascades 1.2

Container {
    id: rootContainer

    Container{
        id: childContainer
        // some content
    }   
}

MyPage.qml:

import bb.cascades 1.2

Page {

    MyCustomContainer{

         Label{
              id: label
         }
    }
}

标签将添加到rootContainer中的所有内容之上。我想在MyCustomContainer中的所有内容下面插入标签(或任何其他内容)。我已经尝试在MyCustomContainer中创建一个属性:

property Container backgroundContent

并将其作为第一个子项添加到MyCustomContainer中:

id: rootContainer

backgroundContent{
    id: backgroundContent
}

并在MyPage中将其设置为:

MyCustomContainer{
     backgroundContent: Container{

     }

但我得到

  

无法分配给不存在的属性“id”

因为尚未设置属性值。

我可以以某种方式在MyCustomContainer的根目录下插入MyPage.qml中的内容吗?

3 个答案:

答案 0 :(得分:0)

听起来您想使用默认属性将MyCustomContainer的任何子项分配给childContainer。

import bb.cascades 1.2

Container {
    id: rootContainer

    default property content: childContainer.children

    Container{
        id: childContainer
        // All children when this control is used will be placed inside this component.
    }   
}

然后它可以自然地用作:

MyCustomContainer {
     Container {

     }

这将在MyCustomContainer组件的childContainer中呈现Container。

答案 1 :(得分:0)

尝试使用backgroundContent.add()

答案 2 :(得分:0)

解决方案相当简单。预测可以在根容器中注入组件的位置,并在那里放置另一个容器。

Container {
id: rootContainer

Container{
    id: injectContainer
}

Container{
    id: childContainer
    // some content
}   
}

injectContainer.add(label)