11

我只需要类似于 Fstream 的东西来读取 QML 中的文件 IO。为什么没有文件IO?

4

6 回答 6

14

如果您的文件是纯文本,您可以使用 XMLHttpRequest。例如:

var xhr = new XMLHttpRequest;
xhr.open("GET", "mydir/myfile.txt");
xhr.onreadystatechange = function() {
    if (xhr.readyState == XMLHttpRequest.DONE) {
        var response = xhr.responseText;
        // use file contents as required
    }
};
xhr.send();
于 2011-10-16T13:30:34.370 回答
5

我知道这是个老问题,但您可能仍然对答案感兴趣。这里是:在 qml (Qt Quick) 中从 .txt 或 .csv 文件中读取一行

简而言之,您在这里解释了如何在 QML 中读取文件:http: //www.developer.nokia.com/Community/Wiki/Reading_and_writing_files_in_QML

您只需要使用 C++ 扩展 QML。

于 2012-12-16T13:06:42.613 回答
4

QML 没有内置的文件 I/O。但是 - 从你的帖子的语气来看 - 你已经知道了。

如何在 QML 中读取 FILE 内容?

您可以使用 C++ 扩展 QML 的功能。

Qt 参考文档中的QML 编程入门教程向您展示了如何构建文本编辑器。这包括使用 C++ 的文件 I/O。

为什么没有文件 I/O?

因为 QML 是基于 JavaScript 的,而 JavaScript 也没有内置的文件 I/O。

QML 被设计为一种(简单的)构建用户界面的方法。您需要一个实际的程序来完成其余的工作。

于 2011-10-14T22:24:44.150 回答
2

使用 Felgo SDK(以前称为 V-Play)为 QML 提供了内置文件 I/O FileUtils。它可以在桌面、iOS 和 Android 上跨平台运行。更多信息和示例也在最新的博客文章中。

它看起来像这样:

var documentsData = fileUtils.readFile("subfolder/file.json")
于 2018-06-13T13:39:19.517 回答
0
function readConfigFile() {
    var xhr = new XMLHttpRequest;
    var configaddress = "File:///" + root + "/webconfig.txt" //root = "c:/folder/file.ini";
    console.log(configaddress);
    xhr.open("GET", configaddress);
    xhr.onreadystatechange = function() {
        if (xhr.readyState == XMLHttpRequest.DONE) {
            var response = xhr.responseText;
            var js = JSON.parse(response)
            if (js.address != "") {
                service_address = js.address
            }
            // use file contents as required
        }
    };
    xhr.send();
}
于 2018-09-25T12:36:04.543 回答
-2

你想读什么文件?......如果它的数据很简单......那么你最好使用QML离线存储API。在此处查找该部分

如果您想为您的应用程序部署一个数据库,请阅读此对话

如果您真的想继续阅读该文件,请学习 C++ 并将您的代码公开给 QML。那么,这超出了我的回答范围。

于 2011-10-23T19:27:33.513 回答