Qt QFileSystemWatcher no Windows
-
12-12-2019 - |
Pergunta
Eu tenho o seguinte problema:Eu criar um QFileSystemWatcher
e funciona e funciona muito bem no Linux, mas de jeito nenhum no Windows 7.Você pode manchar nada no código, que pode fazer com que ele não funcione?
Thx.
Aqui está o código para inicializar:
mConfigChangeWatcher = new QFileSystemWatcher();
mConfigChangeWatcher->addPath(config_file_name);
QObject::connect(mConfigChangeWatcher,
SIGNAL(fileChanged(QString)),
this,
SLOT(configFileChanged(QString)));
e isto é suposto ser o slot para ter o trabalho feito:
void MyClass::configFileChanged(const QString &file)
{
qDebug() << "Changed: " << file ;
}
Solução
Quando você verifica se o arquivo é adicionado para o observador, utilizando QFileSystemWatcher::files()
método após a primeira modificação no arquivo que você obtenha a lista correta?
Eu estava com o problema de que alguns aplicativos, ao modificar um arquivo, exclua o arquivo antigo do sistema e escrevê-la de novo.
Note que QFileSystemWatcher deixa de monitoramento de arquivos, uma vez que eles tenham sido renomeado ou removido do disco, diretórios e depois de terem sido removidos do disco.
Eu estava usando QFileSystemWatcher para ver um ficheiro de imagem editada pelo Photoshop.De alguma forma, o arquivo é removido da lista de arquivos a ser observado.
Outras dicas
Eu tinha o mesmo problema e resolveu muito rápido.Dentro do slot que gerencia o fileChanged
sinal de que eu anotou o caminho desaparece do files()
.Eu, simplesmente, fazer uma seleção e re-adicionar, se necessário,
if (! watcher_.files().contains(path))
{
watcher_.addPath(path);
}
Espero que isso ajude
Fabio