Merci encore Troudhyl pour ta clarté et ta rapidité
1) Du coup, si je veux assurer l'update() dans insertRows, il faut donc que je rajoute le signal dataChanged() après le endInsertRows() j'imagine ? Cependant je n'ai pas de modelIndex en param de la méthode à lui passer, il me suffit de faire :
emit dataChanged(QModelIndex(), QModelIndex());
?
2) Ok! je vais regarder plus attentivement la documentation pour que se soit plus clair. J'ai essayé de droper autre chose mais rien n'est accepté (îcône d'interdiction de drop dans la QTreeView). En fait ce que je trouve étrange c'est qu'il semble suffire d'accepter le drop dans la QTreeView pour que lors d'un drop la méthode insertRows réimplémentée (et non la surchargée) soit automatiquement appelée. (Un drop appel insertRows directement sans que je ne lui ai demandé)
J'avais vu que mimeData permettait non seulement par l'intérmediaire de mimeTypes de définir le format accepté mais je pensais aussi que c'était vraiment par ce moyen que le drag & drop avait lieu.
Au final, je suis quand même encore loin du résultat voulu. Tout ce que je fais pour l'instant c'est donc un appel automatique de insertRows() quand je drop et donc en aucun cas je récupère l'info sur le nom du champ de l'élément que je drag dans le modèle initial.. mais il semblerait que se soit le rôle du mimeData pour le coup!
Mon explication serait donc peut être la suivante : mimeData et dropMimeData par défaut appel déjà bien insertRows si l'index du drop est pas occupé ou setData sinon avec l'échange d'un QString. Par contre, ce qui m'échappe c'est pourquoi le "value" en argument de setData() qui est appelé lors du drop sans redéfinition de mimData et dropMimeData est bien une QString et donc représentatif du format d'affichage plus que représentatif des données réelles du modèle ? (par données réelles, je veux dire qu'en membre j'ai une QList<Struct>.) Pourquoi value de setData n'est donc pas une Struct ?
Merci pour ton aide encore
Partager