Malheureusement, il n'y a aucun moyen de le savoir en général, sans une certaine coopération du processus qui écrit dans le fichier. Le processus d'écriture doit verrouiller le fichier pour un accès exclusif, et le processus de lecture doit continuer à essayer d'ouvrir le fichier pour qu'il le lise jusqu'à ce qu'il réussisse - lorsque le processus d'écriture a supprimé le verrou. Tout ce que le signal directoryChanged
vous dit est ce qu'il dit sur la boîte: le répertoire a changé, ou dans ce cas, il y a une nouvelle entrée dans le répertoire. Ceci est complètement séparé de ce qui est représenté par cette entrée - quel est le contenu du fichier.
L'observateur du système de fichiers ne représente que la moitié de ce qui est nécessaire ici, et ce n'est pas un problème avec Qt, mais avec les processus. Rappelez-vous que vous essayez de coopérer avec l'écrivain. Pour contourner le problème, si vous avez un moyen de valider le contenu du fichier, vous pouvez faire la même chose en lisant et en validant le fichier: réessayez de lire, avec un certain retard jusqu'à ce que la validation réussisse. Pour éviter une utilisation excessive des ressources, il peut être utile que les retards forment un back-off exponentiel.
avez-vous déjà lu ceci? https://forum.qt.io/topic/9846/is-there-a-way-to-detect-when-a-file-copy-process-finish/2 –