精通Qt4编程 chapter08
在Qt中可以使用QFieleSystemWatcher 类来监视文件和目录的改变。使用 addPath函数来监视制定的文件和目录。如果需要监视多个目录,可以使用addPaths()来加入监视。要移除不许要监视的目录,可以使用 removePath() removePaths()函数
当监视的文件被修改或删除时,产生一个fileChanged()信号。如果被监视的目录被改变或删除,产生 directoryChanged()信号。
- #ifndef MSG_H
- #define MSG_H
-
- #include <QtCore>
- #include <QtGui>
-
- class Msg : public QWidget
- {
- Q_OBJECT
-
- public:
- Msg();
-
- public slots:
- void directoryChanged(QString path);
- void fileChanged(QString path);
-
- private:
- QLabel* label;
- QFileSystemWatcher fsWatcher;
- };
- #endif
- #include "Msg.h"
-
- 当监视的文件被修改或删除时,产生一个fileChanged()信号。如果被监视的目录被
- 改变或删除,产生 directoryChanged()信号。下列实现了监视指定目录的功能
- */
- Msg::Msg()
- {
- QFont font;
- font.setPointSize(24);
- setFont(font);
- QStringList args = qApp->arguments(); //获取目录
- QString path;
- if (args.count() > 1)
- path = args[1];
- else //假如没有参数,则当前目录作为参数
- path = QDir::currentPath();
-
- label = new QLabel();
- label->setText(tr("监视的目录:") + path);
- QVBoxLayout *layout = new QVBoxLayout;
- layout->addWidget(label);
- setLayout(layout);
-
- fsWatcher.addPath(path);
- connect(&fsWatcher, SIGNAL(directoryChanged(QString)), this,SLOT(directoryChanged(QString)));
- connect(&fsWatcher, SIGNAL(fileChanged(QString)), this,SLOT(fileChanged(QString)));
- }
-
- void Msg::directoryChanged(QString path)
- {
- QMessageBox::information(NULL, tr("目录有变化"), path);
- }
-
- void Msg::fileChanged(QString path)
- {
- QMessageBox::information(NULL, tr("文件有变化"), path);
- }