qt - QFileSystemModel 和 QFileSystemWatcher 从磁盘删除

标签 qt qfilesystemmodel

我有一个 QTreeView,它是通过 QFileSystemModel 的重新实现来填充的。据我所知,QFileSystemModel 在 rootPath 上安装了 QFileSystemWatcher。我想做的是在 rootPath 上直接删除文件时在我的程序中发出通知,但我还没有找到任何信号或重新实现的函数来为我提供该信息。

我的应用程序通过 ftp 连接上传一些文件,当文件完全上传时,我将其从该位置删除,因此我希望在直接删除文件时(而不是通过删除方法或其他方法)重新实现 QFileSystemModel 发出通知类似)。

希望你能帮助我。我在网上搜索了很多,但找不到任何东西。

干杯。

最佳答案

您可以使用FileSystemModelrowsAboutToBeRemoved信号(继承自 QAbstractItemModel )。

每当从模型中删除一行时都会触发它。 parentstartend 参数允许您获取文件名(在子项的第 0 列中)。

示例代码:

// once you have your model set up:
...
QObject::connect(model, SIGNAL(rowsAboutToBeRemoved(const QModelIndex&, int, int)),
         receiver, SLOT(toBeRemoved(const QModelIndex&, int, int)));
...
// in receiver class:
public slots:
 void toBeRemoved(const QModelIndex &parent, int start, int end) {
  std::cout << start << " -> " << end << std::endl;
  std::cout << parent.child(start, 0).data().typeName() << std::endl;
  std::cout << qPrintable(parent.child(start, 0).data().toString()) << std::endl;
 }

(我认为使用 std::cout 并不是 Qt 的好习惯,这只是为了让您开始。)

来自 QAbstractItemModel 的其他 aboutToBe... 信号可用于文件系统上发生的其他事件。

关于qt - QFileSystemModel 和 QFileSystemWatcher 从磁盘删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7052070/

相关文章:

c++ - Qt 4.6.3 中 QGLWidget 上的 3D 文本

ios - 在 iOS 上录制音频的权限

java - 通过 Qt Jambi 使用粒子(Qt 的惊人功能)

c++ - QListView 在 Mac OS 中不显示

c++ - 在 qmake 期间检测修改的文件

QTreeView/QFileSystemModel : How do I limit tree depth?

c++ - 如何隐藏 QFileSystemModel 中的特定目录

python - 使用 QFileSystemModel 时索引 PyQt5 组合框

Python PyQt QFileSystemModel 根路径

pyqt - 使用 QFileSystemModel 使用磁盘上的文件夹填充组合框