ファイル私はすでにこのようなプロジェクトツリーの一部であるのJavaScriptファイルをインポートすることができます。QML - インポート外部JavaScriptが
import "myFile.js" as MyFile
をすでに私の中に含まれていない外部ファイルのためにこれを行うにはどのような方法がありますプロジェクト、すなわち絶対パスまたは相対パスをディスク上のファイルに渡すことによって、以下のように行くいくつかの質問については
ファイル私はすでにこのようなプロジェクトツリーの一部であるのJavaScriptファイルをインポートすることができます。QML - インポート外部JavaScriptが
import "myFile.js" as MyFile
をすでに私の中に含まれていない外部ファイルのためにこれを行うにはどのような方法がありますプロジェクト、すなわち絶対パスまたは相対パスをディスク上のファイルに渡すことによって、以下のように行くいくつかの質問については
:
はそれが可能[この...]
通常、最も簡単な方法のような何かを行うことです、それを試してみることです。
あなたの質問では、重要なディテールが欠落しています。
は
qrc
-fileかで問題のQMLファイルですか?
そうであれば、それはqrcの外側にあることをQMLに伝える必要があります。写真の場合と同様に、プレフィックスとしてfile:///
を付けてください。
ここで絶対パスが正常に機能します。あなたはどのディレクトリから来るのかを予測する必要があるので、相対的な人は難しいです。私はあなたにそれを伝えることはできません。
QMLがqrc
にない場合は、いずれの場合もファイルシステムの相対パスを指定するよりも、問題はありません。あなたも、あなたがそれを複数のリモートリッテを持つようにしたい場合は、インターネットからそれを試してfile:///
を付加する必要はありません。
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!')
}
}
よりダイナミックな輸入のために、あなたはプロキシスクリプトを作成することができます
// proxyScript.js
function include(path) { Qt.include(path) }
次に、あなたがあなたにそれを使用することができます。このコンテンツを超えないとこのようQMLファイル:
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)
}
[...]
}
あなたは1 proxyScript
で複数の.js
-filesをもインポートすることができます。ただし、インポートするスクリプトの機能は同じ名前空間になります。あなたがしたい場合はもちろん
あなたはまた、より多くの静的プロキシスクリプトを持つことができます。
// staticProxyScript.js
Qt.include('file:/My/Absolute/Path/To/A/Script/That/I/Want/To/Use.js')
あなたの答えをありがとう。 QMLファイルはqrcにあります。"file:///"で絶対パスを使用すると動作しますが、相対パスを取得したいのですが。私は、絶対アプリケーションパスを変数に格納し、それをベースフォルダとして使用しようとしましたが、importステートメントでその変数を使用することはできません。あなたがインターネットからリモートファイルをインポートすることはできますが、アプリケーションに関連するパスを使用してローカルファイルをインポートすることはできません。 –
をあなたに「プロジェクトツリーの一部」とは何ですか?もちろん、あなたのプロジェクトのどこかにある必要があります。しかし、プロジェクトツリーを好きなように定義することはできますか? – derM
不明な点をおかけして申し訳ございません。私が意図したのは、私がQt内で作成していないファイルをインポートしたいのですが、それは自分のqrcにありません。私のディスクのローカルファイルです。 –