Qml 如何访问ListDelegates/ListView中的项目?

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

我不熟悉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
 {
  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组件的对应项是一个类。正如您所知,您只能在类实例-对象中更改成员的值。组件也是如此:您不能在组件中更改任何内容—只能在其实例中更改。有两种可能解决您的问题:

  • 将listViewdelegate的属性绑定到其外部的某些属性:item\u id或listView\u id的属性或其他属性
  • 将listViewdelegate的属性绑定到listModeldata元素的某些属性
  • 示例:

    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;
            }
        }
    }