/*! Destroys the component. */ Component::~Component() { if (parentComponent() != 0) d->m_parentComponent->d->m_allChildComponents.removeAll(this); //why can we delete all create operations if the component gets destroyed if (!d->m_newlyInstalled) qDeleteAll(d->m_operations); //we need to copy the list, because we are changing it with removeAll at top //(this made the iterators broken in the past) QList<Component*> copiedChildrenList = d->m_allChildComponents; copiedChildrenList.detach(); //this makes it a real copy qDeleteAll(copiedChildrenList); delete d; d = 0; }