2010-10-26 21 views
9

Hola a todos, tengo pequeña duda acerca de la gestión de memoria Qt,Gestión de memoria en Qt

permite echar un ejemplo de Listview, en vista de lista le añadimos cada elemento mediante la asignación de memoria dinámica. Así que en este caso lo que tenemos que eliminar todos los “nuevos” elementos ed manualmente ..

Ej:

Qlistview *list = new Qlistview; 
QStandardItemModel *mModel = new QStandardItemModel(); 
list ->setModel(mModel); 

for(int I =0;i<10;i++) 
{ 
QsandardItem *item = new QsandardItem(“Hi”); 
mModel->appendRow(item); 
} 

En este ejemplo, el artículo debe suprimirse de forma manual?

+0

Una forma segura de averiguarlo: mira el código. – shoosh

+0

hmmm, tedioso JOb :) – Naruto

+1

Los documentos de Qt a menudo indican si algún objeto se apropia de un objeto pasado, o no. En el caso de QStandardItemModel, no se menciona en todas partes (es para setItem() por ejemplo, pero no para appendRow()) –

Respuesta

15

QStandardItemModel toma posesión de los elementos, por lo que se eliminarán automáticamente cuando se destruya el modelo. Aún necesita eliminar el modelo en sí mismo (setModel() no transfiere la propiedad del modelo a la vista, porque un modelo puede ser utilizado por múltiples vistas).

Cuestiones relacionadas