青岛高新区建设局网站,在云服务器打建网站,农村电商网站有哪些,wordpress 评论 作者QT 文件监视系统QFileSystemWatcher监视目录的改变相关操作说明mainwindow.hmainwindow.cpp调试结果相关操作说明
添加头文件 Header: #include qmake: QT core
bool QFileSystemWatcher::addPath(const QString path)如果路径存在#xff0c;则会向文件系统监视器添…
QT 文件监视系统QFileSystemWatcher监视目录的改变相关操作说明mainwindow.hmainwindow.cpp调试结果相关操作说明
添加头文件 Header: #include qmake: QT core
bool QFileSystemWatcher::addPath(const QString path)如果路径存在则会向文件系统监视器添加路径。如果该路径不存在或者该路径已被文件系统监视器监视则不会添加该路径。 如果路径指定了一个目录则当修改或从磁盘中删除路径时将发出目录更改的directoryChanged信号 否则当修改、重命名或删除路径时将发出文件化的fileChanged信号。 [static] QString QDir::currentPath()返回应用程序的当前目录的绝对路径。 bool QDir::mkdir(const QString dirName) const创建一个名为目录名的子目录。 成功时返回true否则将返回false。如果在调用此函数时该目录已经存在则它将返回false。 QString QDir::path() const
returns the path. this may contain symbolic links, but never contains redundant “.”, “…” or multiple separators. 返回该路径。这可能包含符号链接但从不包含冗余 . ..或多个分隔符。 [signal] void QFileSystemWatcher::directoryChanged(const QString path)当修改指定路径上的目录例如添加或删除文件或从磁盘中删除时就会发出此信号。请注意如果在短时间内发生了多个更改则某些更改可能不会发出此信号。然而变化序列中的最后一个变化总是会产生这个信号。 注意这是一个私人信号。它可以用于信号连接但不能由用户发出。 [signal] void QFileSystemWatcher::fileChanged(const QString path)当将指定路径上的文件从磁盘中进行修改、重命名或删除时就会发出此信号。 注意作为一种安全措施许多应用程序通过编写一个新文件然后删除一个旧文件来保存一个打开的文件。在插槽函数中您可以检查watcher.files.contains路径。如果它返回false请检查该文件是否仍然存在然后调用添加路径以继续监视它。 注意这是一个私人信号。它可以用于信号连接但不能由用户发出。
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include QMainWindow
#include QFileDialog
#include QFile
#include QFileSystemWatcher
#include QMessageBox
#include QVBoxLayout
#include QLabel
#include QDebug
#include QApplication
#include QDateTime
#include QDirclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent nullptr);~MainWindow();
public slots:void DirChanged( QString path);void FileChanged(QString filename);private:QFileSystemWatcher filewatcher;//文件系统监视对象QLabel *label;
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include mainwindow.hMainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{QStringList list qApp-arguments();//获取行参数qDebug()\nlist list.size();for (int i0;ilist.size();i) {qDebug()iilist list.at(i);}QString strpath;if(list.count() 1)strpath list.at(1);elsestrpath QDir::currentPath();//当前工程路径qDebug()\nstrpath strpath;label new QLabel(this);label-setFixedSize(100,100);label-setWordWrap(true);label-setText(tr(监视目录为:\n)strpath);this-setFixedSize(QSize(500,500));filewatcher.addPath(strpath); //添加系统监控路径QDir dir;dir.cd(QDir::currentPath()); //进入当前目录dir.mkdir(ddd); //创建文件夹//dir.cdUp(); //进入上一级目录qDebug()path dir.path();QFile file;file.setFileName(QDir::currentPath()/ddd/w.txt);//在ddd/创建文本文件bool isopen file.open(QIODevice::WriteOnly | QIODevice::Text);if(!isopen){qDebug()文件打开失败;return;}filewatcher.addPath(file.fileName());connect(filewatcher,SIGNAL(directoryChanged( QString)),this,SLOT(DirChanged( QString)));connect(filewatcher,SIGNAL(fileChanged( QString)),this,SLOT(FileChanged( QString)));
}MainWindow::~MainWindow()
{
}//创建目录 或者 创建目录等会监控到弹出警告框
void MainWindow::DirChanged(QString path)
{qDebug()path path;//当前目录路径QMessageBox::warning(NULL,系统监控目录变化,path);
}//当修改、重命名或删除文件时
void MainWindow::FileChanged(QString filename)
{qDebug()filename filename;//当前目录路径QMessageBox::critical(NULL,系统监控目录文本文件变化,filename);
} 调试结果 修改目录 删除 重命名等 修改文件 删除 重命名等