我有以下问题:我创建了一个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