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 ;
}
Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top