この問題に関してStackoverflowには別の質問がありますが、受け入れられる解決策はありません。古い質問が注目されていないので、もう一度質問します。
状況はこうです。 「main.qml」、「feature1.qml」、「feature2.qml」で定義されたアプリケーション画面があります。
これらの画面は、タイトルバーの下に同じツールバーを共有しています。ツールバーには複数の項目があるため、QMLコードをコピーして貼り付けるのはおかしいです。この質問: QMLファイルインクルード-または1つのモノリシックファイル(構造QMLコード)? は、コンポーネント名としてQMLファイル名を使用することは可能であるが、動作しないことを示しています。
解決策はありますか?詳細plsで。
main.qml
というファイルと、MyCustomText.qml
という別のファイルのコンポーネントがあると仮定します。両方のファイルが同じディレクトリにある場合、次のようにコンポーネントを直接ロードできます。
// in Main.qml
Rectangle {
id: root
MyCustomText {
text: "This is my custom text element"
}
}
MyCustomText.qml
が別のサブディレクトリMyComponents
にあり、たとえばすべてのカスタムコンポーネントをグループ化する場合、コンポーネントを同じ方法で使用する前に、最初にimport
ディレクトリを作成する必要があります。
// in Main.qml
import "MyComponents"
Rectangle {
id: root
MyCustomText {
text: "This is my custom text element"
}
}
注意すべきもう1つの重要な点は、QML
ファイルが常に大文字で始まるである必要があることです。
もちろんLoader
ソリューションも機能しますが、これはQMLファイルを他のコンポーネントにインポートする最も簡単な方法です。
最後に、インターネットから探し出した。含まれるファイルが、このディレクトリ構造内の「mycomponent.qml」であるとします(Qt Quick):
projectdir/
qml/
projectname/
main.qml
mycomponent.qml
「mycomponent.qml」のコンテンツ(例):
Text {
text:"Hello, Scooby Doo!";
}
この方法で(「main.qml」で)ロードする必要があります。
Rectangle {
...
Loader {
source:"mycomponent.qml";
}
...
}