Forse sto interpretando i documenti in modo diverso di quanto si (non ho guardato alla fonte):
QGraphicsItem :: ~ QGraphicsItem() [virtuale]
distrugge la QGraphicsItem e tutti i suoi figli. Se questo elemento è attualmente associato a una scena , l'elemento verrà rimosso dalla scena prima che venga eliminato.
Nota: è più efficiente rimuovere l'elemento da QGraphicsScene prima di distruggere l'elemento.
Lo prendo a significare che lo rimuoverà dalla scena prima di distruggere perché che è più efficiente. Ma se dici che la fonte non indica da nessuna parte che ciò accada, allora sembra che i documenti siano falsi?
Se dovessi indovinare il motivo per cui sarebbe più efficiente rimuovere l'oggetto prima di distruggerlo (indipendentemente dal fatto che l'API lo faccia davvero nel distruttore), penserei che sarebbe necessario fare con ciò che attiva la scena di reindicizzare. Forse eliminando un oggetto che è ancora nella scena, le delezioni a catena degli elementi figlio attirerebbero costantemente la scena alla reindicizzazione. Considerando che, se si desidera rimuovere prima l'elemento, è possibile estrarre in modo efficiente l'intera gerarchia in un modo che richiede solo un singolo aggiornamento della scena, e quindi la normale cancellazione può verificarsi senza ulteriori effetti su di essa? Potrebbero esserci anche più effetti a cascata di altri eventi/segnali figlio mentre vengono cancellati all'interno della scena.
Scommetto che la logica dietro la "Nota" è di informare coloro che vorrebbe sottoclasse un oggetto QGraphics e sovraccaricare il distruttore per tenere a mente la necessità di rimuovere prima la scena.
Grazie per quello. Ho controllato di nuovo la fonte e in realtà c'è una linea che controlla se la scena esiste, e in tal caso, chiama 'd_ptr-> scene-> d_func() -> removeItemHelper (this);'. Immagino che debba essere così. Quindi sembra che tu abbia ragione, che la nota potrebbe essere un po 'fuorviante (o quello o io sono un doofus). – Anthony
@Anthony: Sto andando semplicemente a ingannare :-). I documenti sono pensati per essere utili, e se ti confondeva, allora è una osservazione valida. Buon lavoro nel controllare attraverso la fonte per confermare. – jdi