能否使用QFile::moveToTrash将整个目录移动到回收站
能否直接用QFile::moveToTrash将整个目录移动到回收站
结论
可以,QFile::moveToTrash()原生支持传入目录路径,直接调用即可将整个目录(包含内部所有子文件、子目录)批量移入系统回收站,不需要单独遍历处理单个文件。
版本要求
该特性从Qt 5.15版本开始正式提供,低于该版本的Qt环境无法使用这个特性。
代码说明
你给出的示例代码逻辑完全正确,已经可以实现需求:
// "backup" 是程序运行目录下的文件夹 //QDir("backup").removeRecursively(); QFile::moveToTrash("backup"); ui->btnDeleteAllBackups->setEnabled(false); refreshDiskUsage(); qInfo().noquote() << "已删除备份";
你注释掉的QDir::removeRecursively()是永久删除目录无法恢复,替换为QFile::moveToTrash()后即可实现可恢复的回收站删除效果。
使用建议
- 调用前可以先判断目录是否存在、当前程序是否持有目标目录的读写权限,避免操作失败
- 可以通过函数返回值判断操作结果,示例如下:
bool isSuccess = QFile::moveToTrash("backup"); if (!isSuccess) { // 处理失败逻辑,可通过QFile::errorString()获取错误信息 }
内容的提问来源于stack exchange,提问作者PietR26
相关产品推荐
相关产品推荐

