Qml - Import External Javascript File
Solution 1:
For some questions that go like:
Is it possible to do something like [this...]
usually the easiest way, is to try it out.
In your question a important detail is missing:
Is the QML file in question in a
qrc
-file or not?
If it is, then you need to tell QML that it shall look outside the qrc. As with pictures, you do that, by prefixing it with file:///
.
A absolute path works fine here. The relative is tricky, as you need to predict from which directory you are coming. I can't tell you that.
If the QML is not in a qrc
, than you will specify a relative path on the file system in any case, so no problems here. You don't even need to prepend the file:///
If you want to have it a litte more remote, try it from the internet:
importQtQuick2.5importQtQuick.Controls2.0import'http://code.qt.io/cgit/qt/qtdeclarative.git/plain/examples/quick/demos/photoviewer/PhotoViewerCore/script/script.js'asTestApplicationWindow {
id: windowvisible: truewidth: 600height: 600Button {
text: 'Calculate Scale of an Image: 100x100px for a target size of 200px'onClicked: console.log('It is:', Test.calculateScale(100, 100, 200) + '!\nMagical!')
}
}
For a more dynamic import, you can create a proxy script with no more than this content:
// proxyScript.js
functioninclude(path) { Qt.include(path) }
Then you can use it in your QML file as this:
importQtQuick2.0importQtQuick.Controls2.0import'proxyScript.js'asScript1import'proxyScript.js'asScript2ApplicationWindow {
Component.onCompleted {
// Load scripts herevar path1 = [...] // Build the absolute path of some script to loadvar path2 = [...] // Build the absolute path of another script to loadScript1.include(path1) // Now you can access the content of the script at path1 via `Script1.functionFromPath1...`Script2.include(path2)
}
[...]
}
You can also import multiple .js
-files in one proxyScript
. The functions of the scripts you import however will then be in the same name space.
Of course you can also have more static proxy scripts if you want:
// staticProxyScript.js
Qt.include('file:/My/Absolute/Path/To/A/Script/That/I/Want/To/Use.js')
Post a Comment for "Qml - Import External Javascript File"