Qt QFileSystemWatcher в Windows не отправляет сигнал fileChanged ()

Я отслеживаю файл журнала, который изменяется другим приложением. В Linux я получаю сигнал fileChanged правильно, как только другое приложение изменяет файл. В окнах QFileSystemWatcher не генерирует сигнал fileChanged, пока другое приложение не будет закрыто.

Я попытался открыть журнал с помощью блокнота, чтобы убедиться, что он действительно был изменен, и как только блокнот откроет журнал, QFileSystemWatcher отправит сигнал fileChanged.

Мой код:

void LogLoader::createFileWatcher()
{
if(fileWatcher != NULL) delete fileWatcher;

fileWatcher = new QFileSystemWatcher(this);
connect(fileWatcher, SIGNAL(fileChanged(QString)),
this, SLOT(prepareLogWorker(QString)));

if(fileWatcher->addPath(logPath))
{
qDebug() << "LogLoader: "<< "FileWatcher linked.";
}
}void LogLoader::prepareLogWorker(QString path)
{
//Added this just in case because I read it as solution
//in other question. But in my case the file is not removed.
if (!fileWatcher->files().contains(path))
{
fileWatcher->addPath(path);
}

QTimer::singleShot(1000, this, SLOT(sendLogWorker()));
}

Я делаю что-то неправильно? Есть ли другое решение, кроме проверки
файл вручную время от времени?

2

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]