问题标签 [qfilesystemwatcher]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1386 浏览

c++ - QT - 服务器-客户端程序上的 QFileSystemModel

我正在开发一个服务器-客户端 QT 项目,该项目允许在服务器和客户端之间传输文件。作为一个 GUI 项目,我想在客户端程序上显示服务器的文件系统,比如文件资源管理器。

问题是:有没有办法将 QFileSystemModel 或 QFileSystemWatcher 从服务器发送到客户端,或者在客户端显示服务器的系统文件?谢谢你。

0 投票
1 回答
6192 浏览

qt - 文件通过另一个进程更改后如何刷新 QTreeView 中的 QFileSystemModel?

我有QTreeView一个QFileSystemModel作为模型的。文件和目录正确加载。

在我的应用程序工作流程中,不同的进程复制并覆盖文件系统上的文件。

但是,我QTreeView不会更新被覆盖文件的项目/行(例如:文件的大小和 lastModified 值不会更新为新值)。

使用文件路径,我可以获得一个FileInfo确实具有更新的 lastModified 值。但是,使用相同的路径来获取QModelIndex行的 lastModified 值会导致它返回旧值。

我尝试了一些事情(见下文)无济于事。

如果您知道如何解决此问题,请告诉我。非常感谢!:)

[编辑 - 添加步骤以模拟应用程序工作流程]

我认为以下是可以模仿该问题的步骤。

重现步骤:

  • 设置一个使用 QFileSystemModel 作为其模型的简单 QTreeView。

  • 将根路径设置为名为Root

  • 在目录Test.txt内创建一个文本文件Root

  • 加载应用程序并在其中观察目录中文件Test.txt上次修改日期Root

  • 保持此应用程序窗口打开。

  • 复制Test.txt不同的目录,比如说Temp

  • 修改文件并保存在Temp

  • 复制并替换 Test.txt以覆盖Root目录中的文件

  • 在应用程序窗口中观察最后修改日期

结果:上次修改日期未更新

添加了 SAPMLE:

0 投票
0 回答
278 浏览

python - 如何在python中捕获文件关闭事件

在 Windows 7 64 位机器上使用 python 2.7。如何获取文件关闭事件:

  1. 当文件在文件打开器的新进程中打开时(如记事本,写字板,每次在写字板的新进程中打开文件)
  2. 当文件在文件打开器的选项卡中打开时(如记事本++,它在新选项卡中打开所有文件但只存在一个记事本++运行的进程)

那么,如何在上述情况下获取文件关闭事件?是否可以通过通用代码实现上述情况?我正在处理不同的文件类型。

也可以通过这个方案来解决,当文件打开时,由某个进程处理。而当它关闭时,所有控制它的进程也会丢失。因此,我们可以知道文件是否已关闭。

我在这个问答中发布了这个并尝试了看门狗、pywatch 和 Watcher,但无法获得文件关闭事件

0 投票
2 回答
6123 浏览

c++ - Qt:检查文件夹中的文件是否已更改

如果指定目录(或子文件夹)中的文件没有每次都获取所有修改时间,有什么方法可以触发操作?我问是因为我必须现场检查

0 投票
1 回答
1286 浏览

c++ - 如何从 QFileSystemWatcher `directoryChanged` 事件中获取更改的文件名

如何从 QFileSystemWatcherdirectoryChanged事件中获取更改的文件名?

0 投票
1 回答
709 浏览

c++ - 监控文件完整性

我想编写一个简单的应用程序,告诉我文件何时被修改。

该类是否<QFileSystemWatcher>仅在程序运行时监视更改?

如果是这样,是否有任何其他类可用于文件完整性监控?

0 投票
1 回答
1455 浏览

c++ - QT 检测目录和子文件夹的变化

我想检测不包括子文件夹的目录中的任何更改:

示例:如果我在目录 D:\dropbox 中放置一个列表器,我希望我的应用程序显示:

  • D:\dropbox\folder1\file1.txt 被删除
  • D:\dropbox\folder1\folder2 已创建
  • D:\dropbox\public 被修改
  • ...

我在互联网上找到了这个例子,但它只显示一条简单的消息:“目录已更改”

请问有什么机构可以帮助我吗?

0 投票
1 回答
1004 浏览

qt - QFileSystemWatcher locks directory on Windows

I am watching a directory recursively using QFileSystemWatcher. And I am not able to rename/delete the parent directory either programmatically or manually if its sub directories are being watched.

When trying to rename manually through system i get a message box saying "The action cannot be completed because the folder/ file in it is opened in another program" and on renaming programmatically it fails.

I got these similar bugs, but no resolution:

http://qt-project.org/forums/viewthread/10530

https://bugreports.qt-project.org/browse/QTBUG-7905

I am not watching . and .. as said in the above link, but still the directory is locked.

In case of programmatically renaming.. I tried a workaround: 1. Remove all the subdirectory paths from watcher before renaming the parent. 2. Rename parent. 3. Add subdirectory paths again.

But here too my program fails on first step. QFileSystemWatcher::removePath() returns false when trying to remove the subdirectory path, and QFileSystemWatcher::directories() show that directory in the paths being watched. Same as posted here https://bugreports.qt-project.org/browse/QTBUG-10846

Since step 1 fails here, step 2 also fails and i cannot rename the parent dir.

I am using Qt5.2.1 and Windows 7.

Kindly help me with a resolution.

0 投票
1 回答
638 浏览

c++ - QFileSystemWatcher::files() 不返回文件列表

QFileSystemWatcher用于监视我在watcher->addPath("myPath")方法中设置的目录中的更改。

当我打电话时,watcher->directories()我看到了myPath

但是当我打电话时,watcher->files()我什么也没看到。我想当我使用这种方法时我会看到目录中的文件。

我应该怎么做才能查看目录中的文件?

0 投票
1 回答
398 浏览

python - 在 Python/PySide 中调用类方法

我花了比我愿意承认的时间更长的时间来为这个主题考虑一个合适的“问题”标题,因为我的问题有点难以表达。

以下是情况的快速摘要:

  • 我正在用 Python 3.4 和 PySide 编写一个基本的 GUI
  • 我正在使用 QFileSystemWatcher 来监视特定文件
  • 当文件更改时,QFileSystemWatcher 调用一个方法,该方法又调用 PySide 类中的一个方法
  • 除了 PySide Class 方法中详述的特定于 GUI 的操作没有被执行(我将在下面更详细地解释)之外,上述所有操作似乎都运行良好。

示例代码:

正如我上面提到的,上面的代码不会返回任何错误。当我更改文件(在路径中列出)时,FileChanged 确实从 GUI 类调用 Run() 方法。但是,它实际上不会做任何“东西”,它只会在“东西”之间执行打印命令。

如果我然后单击 GUI 中的“按钮”,它将正确执行 Run(),并正确执行所有“东西”。

我的问题:我在这里缺少什么吗?如果它正确调用该方法,并且能够执行各种“打印”命令,为什么它不执行实际的“东西”?

谢谢!

编辑 1:我删除了 -do stuff- 标签并放入了一些示例代码。所有“东西”代码都与更新各种 PySide QLabels、QTreeWidgets 等有关。

编辑 2:我忘记了 treeWidget 清除命令末尾的 ()。