Für einige Fragen, die wie gehen:
Ist es möglich, so etwas wie [dies ...] zu tun
in der Regel der einfachste Weg ist, um es auszuprobieren.
In Ihrer Frage ein wichtiges Detail fehlt:
Ist die QML-Datei in Frage in einem qrc
-file oder nicht?
Wenn dies der Fall ist, müssen Sie QML mitteilen, dass es sich außerhalb des QRC befinden soll. Wie bei Bildern, tun Sie das, indem Sie es mit file:///
voranstellen.
Ein absoluter Pfad funktioniert hier gut. Der Verwandte ist schwierig, da Sie voraussagen müssen, aus welchem Verzeichnis Sie kommen. Das kann ich dir nicht sagen.
Wenn die QML nicht in einer qrc
ist, dann werden Sie auf jeden Fall einen relativen Pfad im Dateisystem angeben, also keine Probleme hier. Sie brauchen nicht einmal die file:///
voranstellen Wenn Sie es ein litte entfernteren haben wollen, versuchen Sie es aus dem Internet:
import QtQuick 2.5
import QtQuick.Controls 2.0
import 'http://code.qt.io/cgit/qt/qtdeclarative.git/plain/examples/quick/demos/photoviewer/PhotoViewerCore/script/script.js' as Test
ApplicationWindow {
id: window
visible: true
width: 600
height: 600
Button {
text: 'Calculate Scale of an Image: 100x100px for a target size of 200px'
onClicked: console.log('It is:', Test.calculateScale(100, 100, 200) + '!\nMagical!')
}
}
Für eine dynamischere Import, ein Proxy-Skript erstellen mit nicht mehr als diesen Inhalt:
// proxyScript.js
function include(path) { Qt.include(path) }
Dann können Sie es in Ihrem QML-Datei als dies:
import QtQuick 2.0
import QtQuick.Controls 2.0
import 'proxyScript.js' as Script1
import 'proxyScript.js' as Script2
ApplicationWindow {
Component.onCompleted {
// Load scripts here
var path1 = [...] // Build the absolute path of some script to load
var path2 = [...] // Build the absolute path of another script to load
Script1.include(path1) // Now you can access the content of the script at path1 via `Script1.functionFromPath1...`
Script2.include(path2)
}
[...]
}
Sie können auch mehrere .js
-Dateien in einem proxyScript
importieren. Die Funktionen der Skripte, die Sie importieren, befinden sich jedoch im selben Namensraum.
Natürlich können Sie auch mehr statischen Proxy-Skripte, wenn Sie wollen:
// staticProxyScript.js
Qt.include('file:/My/Absolute/Path/To/A/Script/That/I/Want/To/Use.js')
Was Teil des Projektbaumes "für Sie? Natürlich muss es irgendwo in der Reichweite Ihres Projekts sein. Aber Sie können Ihren Projektbaum so definieren, wie Sie möchten, oder? – derM
Entschuldigung wegen Unklarheit. Was ich meinte war, dass ich eine Datei importieren möchte, die ich nicht in Qt erstellt habe und die nicht in meinem Qrc liegt. Nur eine lokale Datei von meiner CD. –