You can use XMLHttpRequest
to access local file and embedded resources but it requires QML_XHR_ALLOW_FILE_READ
environment variable set to 1, e.g.
// in main.cpp
qputenv("QML_XHR_ALLOW_FILE_READ", QString("1").toUtf8());
Here's the XMLHttpRequest
code snippet:
import QtQuick
import QtQuick.Controls
Page {
Frame {
width: parent.width
TextArea {
width: parent.width
wrapMode: Text.WrapAtWordBoundaryOrAnywhere
TextLoader {
url: "messages.txt"
}
}
}
}
// TextLoader.qml
import QtQuick
Item {
id: textLoader
property var target: parent
property string property: "text"
property string url
onUrlChanged: Qt.callLater(load)
function load() {
if (!url) return;
let xhr = new XMLHttpRequest();
xhr.open("GET", url);
xhr.onreadystatechange = () => {
if (xhr.readyState !== 4) return;
if (xhr.status !== 0 && (xhr.status < 200 || xhr.status >= 400)) return;
target[property] = xhr.responseText;
}
xhr.send();
}
Component.onCompleted: Qt.callLater(load)
}
// messages.txt
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris scelerisque augue non magna consectetur pretium quis lobortis mi. Sed fermentum, turpis at molestie imperdiet, odio magna elementum libero, quis posuere lorem risus in libero. Nunc ullamcorper massa eget condimentum venenatis. Donec eget tempus leo, id gravida sem. Duis eget libero id lorem fringilla accumsan dictum sed purus. Pellentesque tristique velit at quam pharetra, in porta tortor hendrerit. In tristique imperdiet velit, ac hendrerit metus sagittis a. Fusce suscipit tellus volutpat, accumsan metus non, tempus sem.
You can Try it Online!