如何在 QML 中获取项目的基类?
Posted
技术标签:
【中文标题】如何在 QML 中获取项目的基类?【英文标题】:How to get base class of item in QML? 【发布时间】:2014-06-17 23:02:12 【问题描述】:有什么方法可以在QML
中获取项目类?我知道objectName
和id
等,但它看起来有点奇怪而且不太舒服。这就是我需要的:
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;
【问题讨论】:
这种信息很可能在解析后被删除了,因为这些名称只是声明了组件的文件的名称...... 【参考方案1】:不,这只能从 C++ 中完成。
【讨论】:
【参考方案2】:我也遇到了同样的问题。 以下回复可能是一个很好的解决方法:https://***.com/a/13928333/1994341。
也就是说:为每个项目设置一个唯一名称的属性“objectName”。 objectName 是QtObject 的唯一属性,由每个 QML 项继承。
在我看来这是一个失误,但是 QML 是一个很棒的工具。
【讨论】:
你可能会充实它,因为它只是一个链接答案,很可能会被删除。 据我判断,我会说是 :) 谢谢你的建议!以上是关于如何在 QML 中获取项目的基类?的主要内容,如果未能解决你的问题,请参考以下文章
您如何确定给定的类型(System.Type)是不是继承自特定的基类(在 .Net 中)?