我正在尝试在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()
来更改颜色,但我得到了同样的错误。有人可以解释我做错了什么吗?
答案 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"
}