在 Qt5/QML 中动态定位嵌套目录和文件

Locate Nested Directories And Files Dynamically In Qt5/QML

我有一个使用 Qt 5.12.6 的 C++ Qt 后端的 QML 应用程序。

我在下面的路径中有一个 txt 文件: "C:/用户//Documents/ParentDir/ChildDir/FinalTarget.txt"

出于几个设计目的,我需要在标准 DocumentsLocation 下找到这些文件。

我试图在我的 Qml 应用程序中以非硬编码方式定位 FinalTarget.txt(我不想硬编码文件的绝对路径)。我已将定位过程的结果记录如下:

console.log("RESULT1= " + StandardPaths.displayName(1));
console.log("RESULT2= " + StandardPaths.locate(1, "ParentDir", 1));

我目前在应用程序输出中收到以下结果作为日志:

qml: RESULT1= Documents
qml: RESULT2= file:///C:/Users/<MY_USER_NAME>/Documents/ParentDir

我怎样才能到达 ChildDir 并最终到达 FinalTarget.txt 因为我的目标是到达我的应用程序中的 FinalTarget.txt 并执行文件 IO 进程,例如读取和写入。

如果有人能告诉我正确的方法来帮助我,那就太好了。

对我来说,下面的代码

Component.onCompleted: {
    console.log("RESULT1= " + StandardPaths.displayName(StandardPaths.DocumentsLocation));
    console.log("RESULT2= " + StandardPaths.locate(StandardPaths.DocumentsLocation, "ParentDir/ChildDir/FinalTarget.txt", StandardPaths.LocateFile));
}

打印

qml: RESULT1= Documents
qml: RESULT2= file:///home/mitch/Documents/ParentDir/ChildDir/FinalTarget.txt

如果文件不存在则失败。所以看来 fileName 参数可以是相对路径。

尽管我很好奇你为什么要从 QML 中执行此操作,因为它没有 API 来执行文件 IO,所以无论如何你都必须在 C++ 中执行此操作。