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

Posted

技术标签:

【中文标题】如何在 QML 中获取项目的基类?【英文标题】:How to get base class of item in QML? 【发布时间】:2014-06-17 23:02:12 【问题描述】:

有什么方法可以在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;
    

【问题讨论】:

这种信息很可能在解析后被删除了,因为这些名称只是声明了组件的文件的名称...... 【参考方案1】:

不,这只能从 C++ 中完成。

【讨论】:

【参考方案2】:

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

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

在我看来这是一个失误,但是 QML 是一个很棒的工具。

【讨论】:

你可能会充实它,因为它只是一个链接答案,很可能会被删除。 据我判断,我会说是 :) 谢谢你的建议!

以上是关于如何在 QML 中获取项目的基类?的主要内容,如果未能解决你的问题,请参考以下文章

您如何确定给定的类型(System.Type)是不是继承自特定的基类(在 .Net 中)?

C#:你如何获得一个类的基类?

QML:如何在 Pathview 中获取当前项目

如何在没有虚方法的情况下创建派生类的基类?

如何将基类的未知子类放在一个数据结构中并在 C++ 中调用重写的基类函数

如何简洁地比较许多派生类的基类的值并调用它们的函数?