def __init__(self, parentItem, **kargs): global parent parent = self if not QMLItem.__engine__: QMLItem.__engine__ = QDeclarativeEngine() component = QDeclarativeComponent(QMLItem.__engine__) qmlData = 'import Qt 4.7\n%s { }' % self.__className__ component.setData(qmlData, QUrl()) self._proxy = component.create() self._metaObject = self._proxy.metaObject() self._scene = parentItem.scene() self._scene.addItem(self._proxy) t = type(self) tDict = t.__dict__ for key in tDict: # connect signals if key.startswith('on') and (key in self.__signals__): signalName = self.__signals__[key] signal = getattr(self._proxy, signalName) signal.connect(getattr(self, key)) # initialize properties elif self._metaObject.indexOfProperty(key) != -1: setattr(self, key, QMLProperty(self._proxy, key, tDict[key])) else: try: # istanciate types if issubclass(tDict[key], QMLItem): setattr(self, key, tDict[key](self._proxy)) except TypeError: pass parent = None