filesystemwatcher 在 win11下信号多次触发的问题
我在win11下,使用qt5.10版本,想要实现 目录监视 的效果,我选择了filesystemwatcher 但是发现,会有情况出现大量信号触发的问题,我的大体代码如下:
我使用
connect(&folderWatcher, &QFileSystemWatcher::directoryChanged, [&](const QString &path){
qDebug()<< "\n文件夹内容已修改 "<< path;
});
目录发生改变,我只进行输出。
然后我目录结构为
share---|
|---|
|---aaa
|
|---test (空目录)
|---test1
|---test2
我将 share aaa test test1 test2 均加入监视,这样我就能监控下面的文件变化,但是程序启动后,
我如果删除其中目录,比如 test1 会提示 “文件夹访问被拒绝 需要提供管理员权限才能删除” (如果不启动程序,删除是正常的)
然后可能会删除失败。
但这只是个小问题,更大的问题是 如果我尝试删除 aaa 目录,我就会收到非常多的信号,因为我的终端有大量打印
都是重复的 “文件夹内容已修改 "C:/Users/sw020/Documents/share/aaa/test/"”,然后我必须停止程序才能停止打印。
因为 test 为空目录 ,所以我猜测与空目录有关? 然后我尝试只删除 test ,然后出现也有一些打印,但是很快就停止了,但是打印中的
path 值 ,不仅包含了 aaa 目录 也包含很多次 test 甚至也包含了 test1 和 test2。
所以有人明白这是为什么吗,为什么在win11下有的情况槽函数触发会有问题。