我正在尝试创建一个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论坛并无情地搜索了这个,但没有成功.如果有人知道答案,我将不胜感激.
谢谢
插口
我正在尝试从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脚本中使用数据时,我遇到类型错误,并且没有可用的类型转换,所以我不知道该怎么做.欢迎任何建议!
谢谢!
插口