我正在尝试QFileSystemWatcher,它不知何故不能按预期工作.或者我做错了什么?
我已将QFileSystemWatcher设置为观看单个文件.当我第一次修改文件时,fileChanged()会被激活,这没关系.但是当我再次修改文件时,fileChanged()不再被激活.
这是源代码:
main.cpp中
#include <QApplication> #include "mainwindow.h" int main(int argc,char **argv) { QApplication app(argc,argv); MainWindow window; window.show(); return app.exec(); }
mainwindow.h
#include <QDebug> #include <QFileSystemWatcher> #include <QMainWindow> #include <QString> class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(); private slots: void directoryChanged(const QString & path); void fileChanged(const QString & path); private: QFileSystemWatcher * watcher; };
mainwindow.cpp
#include "mainwindow.h" MainWindow::MainWindow() { watcher = new QFileSystemWatcher(this); connect(watcher,SIGNAL(fileChanged(const QString &)),this,SLOT(fileChanged(const QString &))); connect(watcher,SIGNAL(directoryChanged(const QString &)),SLOT(directoryChanged(const QString &))); watcher->addPath("path to directory"); watcher->addPath("path to file"); } void MainWindow::directoryChanged(const QString & path) { qDebug() << path; } void MainWindow::fileChanged(const QString & path) { qDebug() << path; }
谢谢您的回答.
编辑1
我在Linux下运行此代码.
编辑2
我实际上需要检查某个目录给出的树中的所有MetaPost文件,无论它们是否被修改.我可能会坚持我的替代解决方案,即每秒运行QTimer并手动检查所有文件. QFileSystemWatcher可能在内部以类似的方式执行此操作,但可能更有效.