Qt QFileSystemWatcher在Windows上

时间:2012-07-26 12:21:10

标签: qt qfilesystemwatcher

我遇到了以下问题:我创建了一个QFileSystemWatcher,它在Linux上运行良好,但在Windows 7上没办法。你能在代码中找到任何可能使它无法工作的东西吗?

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 ;
}

2 个答案:

答案 0 :(得分:4)

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

我遇到的问题是,某些应用程序在修改文件时会从系统中删除旧文件并再次写入。

  

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

我正在使用QFileSystemWatcher来观看由Photoshop编辑的图像文件。不知何故,该文件将从正在观看的文件列表中删除。

答案 1 :(得分:1)

我遇到了同样的问题并且解决得非常快。 在管理fileChanged信号的插槽中,我注意到路径从files()消失。我只需检查并在必要时重新添加

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

我希望这会有所帮助

的Fabio