Qt QFileSystemWatcher on Windows



我有以下问题:我创建了一个QFileSystemWatcher,它在Linux上运行良好,但在Windows7上没有。你能在代码中发现任何可能使其无法工作的东西吗?

Thx。

以下是初始化它的代码:

mConfigChangeWatcher = new QFileSystemWatcher();
mConfigChangeWatcher->addPath(config_file_name);
QObject::connect(mConfigChangeWatcher,
                 SIGNAL(fileChanged(QString)),
                 this,
                 SLOT(configFileChanged(QString)));

这应该是完成工作的插槽:

void MyClass::configFileChanged(const QString &file)
{
    qDebug() << "Changed: " << file ;
}

当您检查文件是否在第一次修改后使用QFileSystemWatcher::files()方法添加到观察程序时,您会得到正确的列表吗?

我遇到的问题是,有些应用程序在修改文件时,会从系统中删除旧文件,然后重新写入。

请注意,一旦文件被重命名或从磁盘中删除,QFileSystemWatcher就会停止监视文件,一旦目录被从磁盘中移除,则会停止监视目录。

我正在使用QFileSystemWatcher观看Photoshop编辑的图像文件。不知怎的,该文件会从正在监视的文件列表中删除。

我遇到了同样的问题,并且很快就解决了。在管理fileChanged信号的时隙内,我注意到该路径从files()消失。我只是做了一个检查,并在必要时重新添加

if (! watcher_.files().contains(path))
{
    watcher_.addPath(path);
}

我希望这能帮助

Fabio

最新更新