我遇到了以下问题:我创建了一个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 ;
}
答案 0 :(得分:4)
当您在文件中第一次修改后使用QFileSystemWatcher::files()
方法检查文件是否已添加到观察者时,您是否获得了正确的列表?
我遇到的问题是,某些应用程序在修改文件时会从系统中删除旧文件并再次写入。
请注意,一旦文件从磁盘重命名或从磁盘中删除,QFileSystemWatcher就会停止监视文件,一旦文件从磁盘中删除,就会停止监视。
我正在使用QFileSystemWatcher来观看由Photoshop编辑的图像文件。不知何故,该文件将从正在观看的文件列表中删除。
答案 1 :(得分:1)
我遇到了同样的问题并且解决得非常快。
在管理fileChanged
信号的插槽中,我注意到路径从files()
消失。我只需检查并在必要时重新添加
if (! watcher_.files().contains(path))
{
watcher_.addPath(path);
}
我希望这会有所帮助
的Fabio