Я хотел бы написать простое приложение, которое сообщает мне, когда файл был изменен.
Ли <QFileSystemWatcher>
класс только следит за изменениями при запуске программы?
Если да, есть ли другие классы, которые я могу использовать для контроля целостности файлов?
Вы можете запустить md5sum и т. Д. Сначала с QProcess, а затем для измененных сигналов и сравнить.
Альтернативой является чтение всего файла в или mmap и создание вашего хэша с помощью QCryptoGraphicHash.
В любом случае, вы должны сделать это сначала, а затем в обработчиках сигналов, например, в слотах, как только будет правильно установлено соединение в вашем подклассе QObject.
#include <QObject>
#include <QFileSystemWatcher>
class MyClass : public QObject
{
Q_OBJECT
public:
explicit MyClass(QObject *parent = Q_NULLPTR)
: QObject(parent)
{
// ...
connect(m_fileSystemWatcher, SIGNAL(fileChanged(const QString&)), SLOT(checkIntegrity(const QString&)));
// ...
}
public slots:
void checkIntegrity(const QString &path)
{
// 1a. Use QProcess with an application like md5sum/sha1sum
// OR
// 1b. Use QFile with readAll() QCryptoGraphicsHash
// 2. Compare with the previous
// 3. Set the current to the new
}
private:
QFileSystemWatcher m_fileSystemWatcher;
};
Отказ от ответственности: Это, очевидно, никоим образом не проверено, но я надеюсь, что это демонстрирует концепцию.