QFileSystemWatcher を使用してディレクトリを再帰的に監視しています。また、サブディレクトリが監視されている場合、プログラムまたは手動で親ディレクトリの名前を変更/削除することはできません。
システムを介して手動で名前を変更しようとすると、「そのフォルダー/ファイルが別のプログラムで開かれているため、アクションを完了できません」というメッセージボックスが表示され、プログラムで名前を変更すると失敗します。
これらの同様のバグがありますが、解決策はありません:
http://qt-project.org/forums/viewthread/10530
https://bugreports.qt-project.org/browse/QTBUG-7905
私は見ていません。そして..上記のリンクで述べたように、それでもディレクトリはロックされています。
プログラムで名前を変更する場合.. 回避策を試しました: 1. 親の名前を変更する前に、ウォッチャーからすべてのサブディレクトリ パスを削除します。2. 親の名前を変更します。3. サブディレクトリ パスを再度追加します。
しかし、ここでも私のプログラムは最初のステップで失敗します。QFileSystemWatcher::removePath() は、サブディレクトリ パスを削除しようとすると false を返し、QFileSystemWatcher::directories() は、監視されているパス内のそのディレクトリを示します。ここに投稿されたものと同じhttps://bugreports.qt-project.org/browse/QTBUG-10846
ここで手順 1 が失敗したため、手順 2 も失敗し、親ディレクトリの名前を変更できません。
Qt5.2.1 と Windows 7 を使用しています。
解決策を教えてください。