Pregunta

Estoy intentando eliminar un elemento de widget de árbol de nivel superior si no hay nodos infantiles 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 simplemente llamar a eliminar en el elemento de widget de árbol de nivel superior? Todavía no me he encontrado con ningún problema, pero me gustaría saber si eso es una práctica segura. Muchas gracias.

if(topLevelTreeWidgetItem->childCount() > 1) {
  topLevelTreeWidgetItem->removeChild(childItem);
}
else
{
  delete topLevelTreeWidgetItem;
}
¿Fue útil?

Solución

deleteUn QtreeWidgetitem directamente es perfectamente seguro.

Según la documentación de ~ Qtreewidgetitem ():

Destruye este artículo del widget de árbol. El elemento se eliminará de QtreeWidgets a los 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.

Otros consejos

Para eliminar una llamada de elemento de nivel superior Qtreewidget :: taketoplevelitem método y luego eliminar el elemento devuelto:

delete treeWidget->takeTopLevelItem(index);

Donde el índice es el índice del elemento a eliminar.

La función Takechild solo funciona con qtreewidgetitem. Con qtreewidget, puede usar Qtreewidget :: taketoplevelitem (int index)

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