Qml使用js读写文件

2023-03-17 13:55:56 浏览数 (3)

❝Qml不用依赖C 的实现,使用js的XMLHttpRequest对象实现读写文件的功能。❞

先看下面的实现例子(读取Qt资源文件main.qml文件并显示到Text控件中):

代码语言:javascript复制
// main.qml
import QtQuick 2.0
import "qrc:/file.js" as File

Rectangle {
    id: root
    width: 480
    height: 320

    Text {
        anchors.fill: parent
        Component.onCompleted: {
            /* 读取Qt资源文件中的main.qml文件内容到Text控件 */
            text = File.read("qrc:/main.qml")

            /* 如需要读取某个路径文件则可以这样写:file:///C:/Users/My/Demo.qml */

            /* 写内容到example.txt中 */
            File.write("example.txt", "Hello qthub.com")
        }
    }
}

file.js文件内容:

代码语言:javascript复制
// file.js
function read(file) {
    var request = new XMLHttpRequest();
    request.open("GET", file, false); // false为同步操作设置
    request.send(null);
    return request.responseText;
}

function write(file, text) {
    var request = new XMLHttpRequest();
    request.open("PUT", file, false); // false为同步操作设置
    request.send(text);
    return request.status;
}

 从file.js文件中看到读写函数的实现,关键的地方在于XMLHttpRequest对象。

  XMLHttpRequest请求特定的url,可以用于获取任何类型的数据,而不仅仅是XML。它甚至支持HTTP以外的协议,比如file://FTP。另外,在浏览器中使用可能出于安全等原因的功能会受到限制。

  既然XMLHttpRequest支持file://协议(本地文件传输协议)那么就可以用它来读写文件了。

关于更多

  • 2019-12-20期公众号推文《QML文件读写控件(预览版)》
  • XMLHttpRequest说明文档:
代码语言:javascript复制
https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequest

1 人点赞