Динамическое добавление вкладок в qml


Я пытаюсь динамически создать Tab s в QML. Приведенный ниже код является простым примером того, что я хочу сделать.

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: не удается установить свойство' color`из null'.

Я попытался получить доступ к Tabс getTab(), чтобы изменить цвет, но я получаю ту же ошибку. Может кто-нибудь объяснить, что я делаю не так?

2 2

2 ответа:

Наконец-то собрался и попытался исправить это, и ему это удалось. Решил опубликовать в качестве ответа на случай, если кто-то наткнется на это от google и имеет аналогичную проблему.

Решение состояло в том, чтобы установить 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
}

Это прекрасно работает.

Лучшее решение:

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