关于QT中QFileSystemWatcher的疑问

niepangu niepangu 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我参考网上的博文自己写了一个非常短的程序用来学习QFileSystemWatcher,
代码如下:

mainwindow.cpp文件:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
fileWatcher = new QFileSystemWatcher(this);

fileWatcher->addPath("C:/Users/Administrator/Desktop/1234/123.txt");
fileWatcher->addPath("/home/owen/test");

connect(fileWatcher, SIGNAL(fileChanged(const QString&)), this, SLOT(m_fileChanged(const QString &)));
connect(fileWatcher,SIGNAL(directoryChanged(const QString&)),this,SLOT(m_directChanged(const QString &)));
}

MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::m_fileChanged(const QString &path){
qDebug() <<"m_fileChanged" <<path;

}
void MainWindow::m_directChanged(const QString &path){
qDebug() <<"m_directChanged" <<path;
}




mainwindow.h 文件:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QFileSystemWatcher>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();

public slots:
void m_fileChanged(const QString &path);
void m_directChanged(const QString &path);

private:
Ui::MainWindow *ui;
QFileSystemWatcher *fileWatcher;

};
#endif // MAINWINDOW_H

在Windows 系统上测试运行正常,当文件内容改变并保存后会触发一次fileChanged 信号


但是当我修改
fileWatcher->addPath("C:/Users/Administrator/Desktop/1234/123.txt");
为
fileWatcher->addPath("/home/a123/123.txt");并在Linux(Ubuntu20.04)下测试的时候发现,修改并保存文件后会触发两次fileChanged 信号,为什么会这样?怎么修改让触发一次fileChanged 信号被?
...全文

相关推荐

QT监视文件和目录变化(QFileSystemWatcher的使用)

“QT监视文件和目录变化(QFileSystemWatcher的使用)”在QT编程中,`QFileSystemWatcher`是一个非常实用的类,它允许开发者监控指定的文件或目录的变化。当这些被监

weixin_38506713

详解Qt之QFileSystemWatcher

在现代软件开发中,文件和目录的实时监控是一个常见的需求。例如,当文件系统中的文件或目录发生变化时,应用程序需要立即响应这些变化。Qt 提供的类正是为了解决这一需求而设计的。本文将详细介绍的概念、作用及其基本用法,并逐一讲解其所有函数,最后通过一个示例代码来巩固所学内容。是一个强大的工具,能够帮助开发者轻松实现文件和目录的实时监控。通过合理使用它,可以显著提高应用程序对文件系统变化的响应速度和用户体验。本文详细介绍了的概念、作用及其基本用法,并逐一讲解了所有函数,希望能为您的开发工作提供帮助。

人才程序员

Qt QFileSystemWatcher实时监控文件夹,保持两个文件夹里面的文件一致

本项目中提到的"Qt QFileSystemWatcher实时监控文件夹,保持两个文件夹里面的文件一致"是一个使用Qt库中的QFileSystemWatcher类实现的功能,其目的是确保两个文件夹的内容始终保持同步

enjoy0104

Qt利用QFileSystemWatcher对文件或目录监听fileChanged.rar

本文介绍了一个基于Qt框架的C++程序入口文件,详细说明了如何创建应用程序实例、初始化主窗口对象、显示窗口以及进入事件循环。程序中定义了MainWindow类,该类继承自QMainWindow,用于监

zhujianqiangqq

Qt5/windows监控文件变动的demo

在本示例中,Qt的文件系统模块(QFileSystemWatcher)被用于监控文件系统的变更事件。

Qter_Sean
评论 1
收藏 已收藏
分享
返回顶部
niepangu
Qt 21,503 成员 26,693 内容