Hi Shiping, id's are scoped to the component in which they are defined (and are accessible to subcomponents, but not to containing components) -- perhaps this is the problem you are running into? For example:
// YellowRect.qml Rectangle { id: yellowRect width: 100 height: 100 color: "yellow" } //invalid.qml Rectangle { YellowRect {} Rectangle { color: yellowRect.color // ### this is invalid, as the id "yellowRect" is not accessible in this context } } //valid.qml Rectangle { YellowRect { id: myRect } Rectangle { color: myRect.color // ### this is valid, as the id "myRect" is accessible in this context } } Likewise, if YellowRect was dynamically created and placed into component X, the "yellowRect" id would not be visible in the context of X. Regards, Michael On 10/11/2010, at 7:39 PM, ext shiping...@nokia.com wrote: > Hi, > > That solves the problem. One more related question, does it mean that > dynamically created QML objects (incl. e.g. the one created using > QDeclarativeComponent::create()) will not have their id registered? > > We've noticed the issue that once we load and attach such objects > programmatically, future binding update to these newly created objects will > not work as it complains the object with the given id is not found. This has > nothing to do with the loader though. Please confirm and we will send some > sample code if you believe it should work and there is something wrong in our > side. > > Thanks again. > > BR, > Shiping > > -----Original Message----- > From: Allison Warwick (Nokia-MS-Qt/Brisbane) > Sent: 10 November, 2010 02:55 > To: Ji Shiping (Nokia-MS/Espoo); Jones Martin (Nokia-MS-Qt/Brisbane); > qt-qml@trolltech.com > Subject: RE: Change property of dynamically created component > > The id of a component does not become a new global identifier. i.e. > "yellowRect" below: > > Component { > id: yellowRectComponent > Rectangle { > id: yellowRect > width: 100 > height: 100 > color: "yellow" > } > } > > As you can imagine: if you had 2 loaders that loaded this, what would happen? > > So, to fix your example, instead of: > > PropertyChanges { > target: yellowRect > color: "gray" > } > > You need: > > PropertyChanges { > target: loader.item > color: "gray" > } > > -- > Warwick > > _______________________________________________ > Qt-qml mailing list > Qt-qml@trolltech.com > http://lists.trolltech.com/mailman/listinfo/qt-qml _______________________________________________ Qt-qml mailing list Qt-qml@trolltech.com http://lists.trolltech.com/mailman/listinfo/qt-qml