Il faut dire que Qt aime bien utilisé les pointeurs en temps qu'arguments :
void addWidget ( QWidget * w )
Je pense donc que la plupart des utilisateurs utilisent, par défaut, des pointeurs pour instancier leurs widgets.
De plus, la fonction :
setAttribute(Qt::WA_DeleteOnClose);
permet l'autodestruction du widget dès qu'il est "graphiquement" fermé.
Par contre, je profite de cette digression sur la destruction des objets pour poser une question.
J'utilise un QTreeWidget et je l'ai rempli à la façon de la doc de Qt :
1 2 3 4 5 6
| QTreeWidget *treeWidget = new QTreeWidget();
treeWidget->setColumnCount(1);
QList<QTreeWidgetItem *> items;
for (int i = 0; i < 10; ++i)
items.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(QString("item: %1").arg(i))));
treeWidget->insertTopLevelItems(0, items); |
Par contre, dans mon destructeur de classe, je n'arrive pas à supprimer ma liste. Le compilateur (msvc 2005) m'indique un problème de conversion de type :
1 2 3 4 5
| impossible de convertir de 'QList<T>' en 'void *' with
[
T=QTreeWidgetItem *
]
Aucun opérateur de conversion définie par l'utilisateur disponible qui puisse effectuer cette conversion, ou l'opérateur ne peut pas être appelé. |
Si vous avez des idées pour régler ce genre de problème, je suis preneur !
Une autre question concernant les QList, y'a t'il une différence "au niveau mémoire" entre un :etMerci beaucoup !
G.
Partager