问题标签 [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 投票
0 回答
386 浏览

c++ - QFileSystemWatcher 应该与设备节点一起使用吗?

Qt 对我来说是新的,所以我还不知道所有的习语。我有一个自定义的 linux 驱动程序,它把自己暴露为/dev/mydevice. 当硬件中发生有趣的事情时,驱动程序会将一些数据写入该文件。我已经测试过这适用于

当我按下按钮时,可以看到我的数据被转储到屏幕上。

现在我想要一个简单的 GUI 来向我展示正在转储的内容;QFileSystemWatcher似乎是一个不错的选择,因为它“监视文件系统以更改文件”,但它不会触发fileChanged信号。

我猜QFileSystemWatcher只是在看修改时间或类似的东西?由于QFile没有实现readyRead信号,我是否要生成一个新线程并循环QFile::read()?或者实现我自己的QIODevice那样做?实现我的目标的最佳方式是什么?

这是玩具示例。

主.cpp:

qfswtestcon.pro:

0 投票
1 回答
596 浏览

python - 使用 QFileSystemWatcher 在生成数据文件时导入数据文件的更好方法?

我正在使用 PyQt4 编写一个监视文件夹的应用程序,并在收集数据时导入数据(包含在子文件夹中),以便在生成数据时对其进行分析。

本质上,数据收集软件的工作方式是生成一个文件夹,用于放置数据文件。在该文件夹中,它放置了几个文件 - 不同的 .xml 文件,其中包含软件的不同配置参数以及实际数据文件,保存为 .csv 文件。

我编写了一个小测试应用程序(如下),它能够查看文件夹、查找添加的子文件夹,然后查看这些子文件夹中的文件更改,以便可以导入数据。但是,我不确定我是否是最好的方法。特别是,由于添加了多个文件,我必须筛选我需要添加的文件和不添加的文件(通常我只需要 1 个 xml 文件和 1 个数据文件,其他位是无关的)。

此外,这可能是更大的问题 - 数据文件本身作为另一个文件(只是一个临时文件)开始,然后数据采集软件在记录结束时将其转换为相应的 .csv 文件(临时文件然后已删除)。生成 .csv 文件时发出的 directoryChanged 信号发生在转换之后,但在文件完全写入之前(有时 - 这是事情变得有点模糊的地方)。我的意思是,有时,如果我在发出该信号时导入数据,则会导入整个数据集。其他时候,只导入一部分(例如前 200 行)。但是,如果我等待下一个 directoryChanged 信号,我会得到整个数据集。不过,我不太确定如何专门等待下一个信号。

这可能不清楚,所以我在下面提供了一个示例输出。它说“导入数据”的地方就是我的导入功能。这就是有时我得到完整数据集的地方,有时我只是得到其中的一部分。

我只是想知道是否有更好的方法来做到这一点,因为这是我第一次通过(阅读:猜测)如何做到这一点。

代码:

示例输出(3 个周期,因此将导入 3 个数据文件):

0 投票
0 回答
691 浏览

c++ - Windows 上的 Qt QFileSystemWatcher 不发送 fileChanged() 信号

我正在跟踪由另一个应用程序更改的日志文件。在 linux 中,只要其他应用程序更改文件,我就会正确收到 fileChanged 信号。在 Windows 中,QFileSystemWatcher 在关闭其他应用程序之前不会发出任何 fileChanged 信号。

我试图用记事本打开日志以确保实际已更改,并且一旦记事本打开日志,QFileSystemWatcher 就会发送 fileChanged 信号。

我的代码:

难道我做错了什么?除了不时手动检查文件之外,还有其他解决方案吗?

0 投票
1 回答
645 浏览

c++ - QFileSystemWatcher 仅在 main() 中工作

我正在尝试使用 QFileSystemWatcher,如下例所示: 如何使用 QFileSystemWatcher 监视文件夹以进行更改

但是,当我在我的 ui 中尝试这个完全相同的代码时,如下所示,它不起作用:

这是我的“systemfilewatcher.h”:

我的目标是检测何时在目标目录中创建文件并将其名称放入 QString 堆栈中。我不知道我在这里做错了什么,有人可以帮助我吗?

0 投票
1 回答
949 浏览

python - 如何使用 QFileSystemWatcher 仅发出一个 directoryChanged 信号

这是我的应用程序的基本前提:

我已经建立了一个 QFileSystemWatcher 来监视一个目录。

我过去曾使用过 QFileSystemWatcher,它总是运行良好(对于目录和文件更改)。

该应用程序将显示 \Images 文件夹中的图像幻灯片。将新图像放置在 \Images 文件夹中时,幻灯片将重置为包含新图像。如果图像从 \Images 文件夹中删除,幻灯片将再次重置。

我遇到的问题是:如果我将多个图像拖到 \Images 文件夹中,则会多次触发 directoryChanged 信号。信号被触发,并且为每个添加到文件夹中的图像运行相应的 UpdateImages() 例程,即使它们是同时添加的(即选择多个图像,将它们拖放到 \Images 中)。

这破坏了我的日常生活。有没有办法为一批目录更改触发一次 directoryChanged 信号?即我可以在最终图像添加到目录之前禁用信号吗?

非常感谢!

0 投票
0 回答
86 浏览

python - 来自线程内部的 Popen 命令的 Python 输出实时到 GUI 表单中

作为 Python 新手,我浏览了该站点并找到了部分答案,但没有任何帮助使事情变得清晰。这就是我所拥有的。主窗口通过按钮激活运行命令(wash -C -i monX)的线程,并且表格需要在 GUI 中实时填充结果。我在这里找到了循环的代码Intercepting stdout of a subprocess while it is running。代码在这里https://github.com/theodhori-dhiamanti/wifern/blob/master 有问题的代码是:

调用此方法以及需要使用结果的 GUI 部分是:

self.wash_thread = WashThread() # 在主体中初始化的方法 如何将线程的输出传输到主体部分?之后我可以将值适当地分配给表字段吗?任何帮助是极大的赞赏。* 注意:在线程之外,该方法按预期工作。

0 投票
2 回答
161 浏览

windows - WinEvent 日志和 QFileSystemWatcher

我尝试将 WinEvent Logs Windows7 添加到 QFileSystemWatcher。但是,addPath()方法返回false值。

尝试添加 winevt 文件夹后,我得到了同样的结果:

Winevt 文件夹具有只读属性,我无法修改它(更改后,应用,关闭和重新打开属性有旧的保留)。我在 QFileSystemWatcher 文档中阅读:

监视失败的原因通常取决于系统,但可能包括资源不存在、访问失败或监视总数限制(如果平台有)。

但我不知道如何找到故障源以及如何修复它。提前致谢。

0 投票
1 回答
134 浏览

qt - 当我从 QFileSystemWatcher 获得 directoryChanged 信号时,新添加的文件未完成读取

我希望在将文件添加到“/test”时收到通知。所以我使用了 QFilesystemWatcher 的 directoryChanged 信号。但是当“cp aa.txt /test”我得到directoryChanged信号时,当我阅读aa.txt时我有不完整的aa.txt。

在这种情况下,我如何知道文件已完成读取?

仅供参考,我不能使用 fileChanged 信号,因为不知道确切的文件名。

0 投票
1 回答
1988 浏览

c++ - QFileSystemWatcher 不在控制台应用程序中发出 fileChanged()

在我的文件console.h/.cpp我有一个小类,它只要求用户输入一些文本,然后再次打印文本,直到用户输入“退出”(参见方法consoleMain())。但是,在main.cpp中,我还有一个 监视QFileSystemWatcher文件MyTextFile.txtConsole::slotFileChanged(QString)并在文本文件更改时调用。不幸的是,QFileSystemWatcher它不起作用。Console::slotFileChanged(QString)当我更改文本文件时永远不会执行。据我所知,QFileSystemWatcher仅当主事件循环已启动时才有效,我的代码也是如此。当我QTimer::singlaShotmain.cpp中禁用并用主事件循环替换它时,emit console.signalStart() 不会进入,但我看到了QFileSystemWatcher(“文件已更改!”)的消息在我输入“退出”之后。问题是:是否可以让用户与控制台交互并让 FileWatcher 在并行更改文本文件时发出信号?(我也尝试将其QFileSystemWatcher放入控制台类并在堆上创建它;不幸的是它没有改变任何东西)

这是我的代码:

控制台.h

控制台.cpp

主文件

0 投票
1 回答
642 浏览

python - QFileSystemWatcher error handling with PySide/PyQt - Python 3.x

My program utilises Qt's QFileSystemWatcher function to monitor a network directory (not on the local machine itself) for changes, and then run a script when a change is found. This function performs as required for the most part. The program is designed to run 24/7, which has raised some issues using this particular function.

The error which is causing issues is as follows:

The functionality I'd like to implement is as follows:

  1. Build in error handling surrounding network availability for QFileSystemWatcher
  2. If the network becomes unavailable and the error is raised, go to Script()
  3. Run Script() for handling the unavailable network

Given that the QFileSystemWatcher function is established in the initialisation of the program, I'm not sure how to go about error handling. Here's the basic outline of my current code:

Is there a way to explicitly establish error handling for the 'FindNextChangeNotification' error? Any input would be greatly appreciated!