Pregunta

Normalmente cuando puedo eliminar un objeto lo puse a cero.Esto ayuda a que el código de mis rutinas para comprobar el objeto no es cero, a continuación, proceder.

Sin embargo, si yo uso el deleteLater() la función que he perdido el control de la misma.No sé si es un elemento válido o si tengo que crear uno nuevo.La solución que encontré fue sólo para controlar el estado por separado, sin embargo hay una manera mejor?

¿Fue útil?

Solución

No hay nada de malo si se llama deleteLater() en su objeto y, a continuación, establezca el puntero a nullptr.Marco de Qt va a eliminar de forma segura el objeto para usted.

Como alternativa, también puede conectarse a destruido la señal a ser notificado de su objeto la destrucción y establecer el puntero a nullptr en esa ranura.

Otros consejos

Usted puede utilizar QPointer si el objeto que se va a eliminar es un QObject.Esto se establece a NULL.

Qué significa "cero el puntero"?En C++ es más importante que en Java para hacer la distinción entre el objeto y un puntero a él.Aquí, es especialmente importante, ya que si cero, el objeto de su destructor no funciona.Si usted cero un puntero al objeto, no hay problema, porque Qt se ha añadido otro puntero a la de "objetos" a ser eliminado" de la lista.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top