4

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

谢谢。

这是初始化它的代码:

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

2 回答 2

5

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

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

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

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

于 2013-09-16T14:29:07.587 回答
1

我有同样的问题并很快解决了。在管理信号的插槽内,fileChanged我注意到路径从files(). 我只是进行检查并在必要时重新添加

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

我希望这有帮助

法比奥

于 2014-10-13T16:15:50.620 回答