在qml中动态添加标签

时间:2013-07-15 06:22:46

标签: qt qml qt5 qtquick2

我正在尝试在QML中动态创建Tab。下面的代码是我想要做的一个简单的例子。

import QtQuick 2.0
import QtQuick.Controls 1.0

ApplicationWindow{
    id:win

    TabView{
        id:tb
        anchors.fill:parent

        MouseArea{
            anchors.fill:parent
            onClicked:tb.loadTab()
        }

        Component{
            id:viewComp
            Rectangle{
                anchors.fill:parent
                color:"black"
            }
        }

        function loadTab(){
            var t=addTab("x",viewComp)
            t.item.color="blue" //line 20
        }
    }
}

添加第一个Tab按预期工作。但是,之后添加的任何其他Tab都会触发错误:

  

TypeError:无法设置null`的属性'color'。

我尝试使用Tab访问getTab()来更改颜色,但我得到了同样的错误。有人可以解释我做错了什么吗?

2 个答案:

答案 0 :(得分:3)

终于到处试图解决这个问题,并取得了成功。决定发布作为答案,以防有人从谷歌绊倒这个并有类似的问题。

解决方案是将currentIndex设置为新的Tab,然后设置Tab的属性。这意味着函数loadTab()看起来像这样:

loadTab(){
    var c_tab=currentIndex
    var t=tb.addTab("x",viewComp)
    currentIndex=count-1
    t.item.color="blue" 
    currentIndex=c_tab
}

这很好用。

答案 1 :(得分:0)

更好的解决方案:

loadTab(){
    var c_tab=currentIndex
    var t=tb.addTab("x",viewComp)
    t.active = true;// real loading
    t.item.color="blue" 
}