小编Jac*_*son的帖子

如何在QML中将QML项目分配给组件属性,然后在组件内部使用该对象?

我正在尝试创建一个QML对象,其作用类似于其他对象的包装器.这是我的QML文件(Container.qml):

Item {
    property string label
    property Item control

    Row {
        Label {
            text: label
        }

        // Not sure how to display the control assigned to the control property
    }
}
Run Code Online (Sandbox Code Playgroud)

我想做什么(在我的QML中使用这个组件)是这样的:

Container {
    label: "My Label"
    control: Textbox {
        text: "My Value"
    }
}
Run Code Online (Sandbox Code Playgroud)

当输入QML时,结果(在界面中)应该类似于此QML的输出:

Item {
    Row {
        Label {
            text: "My Label"
        }
        Textbox {
            text: "My Value"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这可能吗?当我尝试这样做时,在将一个Item分配给control属性时,我得到"无法将对象分配给属性".我搜索了Qt论坛并无情地搜索了这个,但没有成功.如果有人知道答案,我将不胜感激.

谢谢

插口

properties qml

28
推荐指数
2
解决办法
3万
查看次数

如何从QML中的listview访问currentItem的角色?

我正在尝试从QML中的ListView访问角色.基本上,我在我的QML中有这个:

ListView {
    id: myId
    model: myModel
    delegate: Item {
        Text {
            text: model.text
        }
        Text {
            text: model.moreText
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

myModel是一个QAbstractListModel实现.QML部分是可重用的组件,因此模型可以具有各种数据类型的任意数量的不同角色.我想要做的是绑定currentItemListView属性的给定角色的值.换句话说,我想Component在页面上有一些可以将属性绑定到ListView中当前选定项目的其他内容,如下所示:

Text {
    text: myId.currentItem.text // Or myId.currentItem.model.text (or something similar)
}
Run Code Online (Sandbox Code Playgroud)

请记住,我需要这个一般可用,因为我将为许多模型类型做很多事情,我试图不为每个模型和ListView编写那种自定义代码.

看起来访问当前所选项目的属性应该很简单,但据我所知,这是不可能的.当只有一个角色时,模型似乎被区别对待,这个问题更加复杂.我的意思是,有时您通过model.roleName而不是只使用一个角色来访问您的角色modelData.

如果有人有任何建议,我会非常感激.非常感谢!

编辑

我找到了这个:

http://comments.gmane.org/gmane.comp.lib.qt.qml/1778

但是,这似乎对我没用.当我尝试在我的QML脚本中使用数据时,我遇到类型错误,并且没有可用的类型转换,所以我不知道该怎么做.欢迎任何建议!

谢谢!

插口

listview roles qml qabstractlistmodel

20
推荐指数
2
解决办法
3万
查看次数

标签 统计

qml ×2

listview ×1

properties ×1

qabstractlistmodel ×1

roles ×1