【发布时间】:2011-10-14 21:56:26
【问题描述】:
我只需要类似于 Fstream 的东西来读取 QML 中的文件 IO。为什么没有文件IO?
【问题讨论】:
我只需要类似于 Fstream 的东西来读取 QML 中的文件 IO。为什么没有文件IO?
【问题讨论】:
如果您的文件是纯文本,您可以使用 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();
【讨论】:
我知道这是个老问题,但您可能仍然有兴趣回答。 这里是:Reading a line from a .txt or .csv file in qml (Qt Quick)
简而言之,您在这里解释了如何在 QML 中读取文件:http://www.developer.nokia.com/Community/Wiki/Reading_and_writing_files_in_QML
您只需要使用 C++ 扩展 QML。
【讨论】:
QML 没有内置的文件 I/O。但是 - 从你的帖子的语气来看 - 你已经知道了。
如何在 QML 中读取 FILE 内容?
您可以使用 C++ 扩展 QML 的功能。
Qt 参考文档中的Getting Started Programming with QML 教程向您展示了如何构建文本编辑器。这包括使用 C++ 的文件 I/O。
为什么没有文件 I/O?
因为 QML 是基于 JavaScript 的,而 JavaScript 也没有内置的文件 I/O。
QML 被设计为一种(简单的)构建用户界面的方法。您需要一个实际的程序来完成剩下的工作。
【讨论】:
Felgo SDK(以前称为 V-Play)FileUtils 为 QML 提供了内置文件 I/O。它可以在桌面、iOS 和 Android 上跨平台运行。更多信息和示例也在latest blog post。
看起来像这样:
var documentsData = fileUtils.readFile("subfolder/file.json")
【讨论】:
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();
}
【讨论】:
您要读取文件的目的是什么?...如果它的数据很简单...那么您最好使用 QML 离线存储 API。 Look for that section here.
如果您想为您的应用程序部署一个数据库,请阅读this conversation。
如果您仍然真的想阅读该文件,请学习 C++ 并将您的代码公开给 QML。那么,这超出了我的回答范围。
【讨论】: