我正在尝试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可能在内部以类似的方式执行此操作,但可能更有效.
解决方法
原文地址:https://www.jb51.cc/c/110362.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。