Я бы посоветовал даже не использовать для этого флажок, а просто полностью автоматизировать процесс, используя QFileSystemWatcher.
Сначала вам нужно будет добавить желаемый путь для просмотра:
bool QFileSystemWatcher::addPath(const QString и путь)
Добавляет путь к наблюдателю файловой системы, если путь существует. Путь не добавляется, если он не существует или уже отслеживается наблюдателем за файловой системой.
Если путь указывает каталог, сигнал directoryChanged() будет выдан, когда путь будет изменен или удален с диска; в противном случае сигнал fileChanged() выдается, когда путь изменяется, переименовывается или удаляется.
Если просмотр прошел успешно, возвращается true.
Причины сбоя наблюдения обычно зависят от системы, но могут включать в себя несуществующий ресурс, сбои доступа или общее ограничение количества часов, если оно есть на платформе.
Примечание. Может существовать ограничение, зависящее от системы, на количество файлов и каталогов, которые можно отслеживать одновременно. Если этот предел достигнут, путь не будет отслеживаться и будет возвращено значение false.
Вы будете подключены к следующему сигналу:
void QFileSystemWatcher::fileChanged(const QString и путь) [сигнал]
Этот сигнал испускается, когда файл по указанному пути изменяется, переименовывается или удаляется с диска.
Затем слот обработчика может просто автоматически выводить уведомление пользователю, даже без явного флажка.
Применяя все это на практике, я бы написал что-то вроде этого:
MyClass::MyClass(QObject *parent) : QObject(parent)
{
connect(myFileSystemWatcherPointer, SIGNAL(fileChanged(const QString &)), SLOT(handleFileChanged(const QString &)));
myFileSystemWatcherPoiner->addPath(myFilePath);
}
MyClass::handleFileChanged(const QString &file)
{
if (file == desiredFile)
showUpdatePopUp();
}
person
lpapp
schedule
12.01.2014