Qml 如何访问ListDelegates/ListView中的项目?
我不熟悉Qt/QML编码,在访问listview中listdelegate中的元素方面,我面临一个问题 例如,如果我的Qml看起来像这样Qml 如何访问ListDelegates/ListView中的项目?,qml,Qml,我不熟悉Qt/QML编码,在访问listview中listdelegate中的元素方面,我面临一个问题 例如,如果我的Qml看起来像这样 Item { id: item_id property int focus_id: 0 function setFocusImageSource() {} ListView { id: listView_Id delegate: listViewdelegate model: listModeldata } Component
Item
{
id: item_id
property int focus_id: 0
function setFocusImageSource() {}
ListView
{
id: listView_Id
delegate: listViewdelegate
model: listModeldata
}
Component
{
id: listViewdelegate
Rectangle
{
id: rectangle_id
Image
{
id: focus_Image
source: x.x
}
}
}
ListModel
{
id: listModeldata
/*elements*/
}
}
现在,列表视图的基本功能与我的代码(不是上面的代码)配合得很好。但是,当我执行特定操作时,我需要更改对焦图像。我想使用函数“setFocusImageSource()”来更改它。我已尝试直接使用focus_image.source=“xx”设置图像源
矩形组件中的图像是代理的本地图像,无法从ITEM标记访问。如果是这样,我如何设置上述函数中的图像
提前谢谢
CHAND。M
< P> C++中QML组件的对应项是一个类。正如您所知,您只能在类实例-对象中更改成员的值。组件也是如此:您不能在组件中更改任何内容—只能在其实例中更改。有两种可能解决您的问题:Image {
id: focus_Image
source: x.x // defualt value
Connections {
target: item_id
onFocus_idChanged: {
if ( /* some logic if needed */ ) {
focus_Image.source = xx;
}
}
}
}
或
Image {
id: focus_Image
source: {
// inidicator is a property of the element of listModeldata
if (indicator) {
return xx;
}
}
}