gpt4 book ai didi

qt - QFileSystemModel 和 QFileSystemWatcher 从磁盘中删除

转载 作者:行者123 更新时间:2023-12-04 06:17:29 25 4
gpt4 key购买 nike

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

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

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

干杯。

最佳答案

您可以使用 FileSystemModel rowsAboutToBeRemoved 信号(从 QAbstractItemModel 继承)。

每当从模型中删除一行时,它就会被触发。 parent , startend参数允许您获取文件名(在子项的第 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;
}

(我认为在 Qt 中使用 std::cout 并不是一个好习惯,这只是为了让您入门。)

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

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com