2012-02-22 11 views
5

Estoy intentando eliminar un elemento de widget de árbol de nivel superior si no hay nodos secundarios dentro del elemento de nivel superior. ¿Cuál es la forma correcta de hacer esto? Parece que no puedo encontrar la llamada API dentro de la documentación de Qt. ¿Es seguro llamar simplemente eliminar en el elemento del widget de árbol de nivel superior? Todavía no me he encontrado con ningún problema, pero me gustaría saber si es una práctica segura. Muchas gracias.¿Cómo elimino un QTreeWidgetItem de nivel superior de un QTreeWidget?

if(topLevelTreeWidgetItem->childCount() > 1) 
    topLevelTreeWidgetItem->removeChild(childItem); 
else 
{ 
    delete topLevelTreeWidgetItem; 
} 

Respuesta

10

delete ing a QTreeWidgetItem directamente es perfectamente seguro.

De acuerdo con la documentación de ~QTreeWidgetItem():

Destruye este artículo widget de árbol. El elemento se eliminará de QTreeWidgets al que se ha agregado. Esto hace que sea seguro eliminar un artículo en cualquier momento.

He usado delete en muchos QTreeWidgetItems en la práctica y funciona bastante bien.

+0

Gracias por confirmar esto. He creado mis elementos de nivel superior en mis punteros QTreeWidgetItem de QTreeWidget para hacer referencia a ellos a lo largo de mi código. Hacerlos hace que sea más fácil eliminarlos y reiniciarlos si es necesario. –

3

Para eliminar un método de nivel superior llamada elemento QTreeWidget::takeTopLevelItem y luego borrar el artículo devuelto:

delete treeWidget->takeTopLevelItem(index); 

donde el índice es el índice del elemento que desea eliminar.

Cuestiones relacionadas