如何在QML中获取项目的基类?

时间:2014-06-17 23:02:13

标签: javascript qt qml qtquick2

有没有办法在QML中获取项目类?我知道objectNameid等等,但它看起来有点奇怪,不太舒服。这就是我需要的:

ComboBox {
    id: comboBox
}
TextField {
    id: textField
}

function getValue(item) {
    switch(item.???) {   //what property can I use here?
        case 'ComboBox':
            return item.model.get(item.currentIndex).value;
        case 'TextField':
            return item.text;
    }
}

使用互联网上许多文章中描述的objectName可能含糊不清,例如:

ComboBox {
    id: comboBox
    objectName: "ComboBox"
}
TextField {
    id: textField
    objectName: "ComboBox" /// oops!!
}

function getValue(item) {
    switch(item.objectName) {  
        case 'ComboBox':
            return item.model.get(item.currentIndex).value;
        case 'TextField':
            return item.text;
    }
}

2 个答案:

答案 0 :(得分:1)

不,这只能通过C ++完成。

答案 1 :(得分:0)

我也遇到了同样的问题。 以下回复可能是一个很好的解决方法:https://stackoverflow.com/a/13928333/1994341

也就是说:对于每个项目,您使用唯一名称设置属性“objectName”。 objectName是QtObject的唯一属性,由每个QML项继承。

据我所知这是一个小姐,但QML是一个很棒的工具。