您的位置:首页 > 编程语言 > Qt开发

Qt监测系统文件变化QFileSystemWatcher

2016-05-25 14:48 375 查看
QFileSystemWatcher文件系统监视器
#include <QFileSystemWatcher>
#include <QDir>
private:
Ui::Widget *ui;
QPoint relativePos;
QFileSystemWatcher myWatcher;
private slots:
void showMessage(const QString &path);
    // 将监视器的信号和自定义的槽进行关联
    connect(&myWatcher, SIGNAL(directoryChanged(QString)), this, SLOT(showMessage(QString)));
    connect(&myWatcher, SIGNAL(fileChanged(QString)), this, SLOT(showMessage(QString)));
    // 显示出当前目录下的所有.h文件
    QDir myDir(QDir::currentPath());
    myDir.setNameFilters(QStringList("*.h"));
    ui->listWidget->addItem(myDir.absolutePath() + tr("目录下的.h文件有:"));
    ui->listWidget->addItems(myDir.entryList());

    // 创建目录,并将其加入到监视器中
    myDir.mkdir("mydir");
    myDir.cd("mydir");
    ui->listWidget->addItem(tr("监视的目录:") + myDir.absolutePath());
    myWatcher.addPath(myDir.absolutePath());
    // 创建文件,并将其加入到监视器中
    QFile file(myDir.absolutePath() + "/myfile.txt");
    if (file.open(QIODevice::WriteOnly)) {
        QFileInfo info(file);
        ui->listWidget->addItem(tr("监视的文件:") + info.absoluteFilePath());
        myWatcher.addPath(info.absoluteFilePath());
        file.close();
    }
// 显示文件或目录改变信息
void Widget::showMessage(const QString &path)
{
QDir dir(QDir::currentPath() + "/mydir");
// 如果是目录发生了改变
if (path == dir.absolutePath()) {
ui->listWidget->addItem(dir.dirName() + tr("目录发生改变: "));
ui->listWidget->addItems(dir.entryList());
} else { // 如果是文件发生了改变
ui->listWidget->addItem(path + tr("文件发生改变!"));
}
}
参考:http://blog.csdn.net/taiyang1987912/article/details/38301169
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: