Qt 5.9でQt Quick 2.1に問題が発生しました。具体的には、私はStackView QMLコンポーネントを私が必要とするものにするのに苦労しています。私は、プロパティを持つ別のQMLファイルで定義された項目をプッシュしようとしています。ここでは、私が行ったことの説明があります。QML StackView個別のファイルで定義されたコンポーネントをプッシュする方法は?
QML/main.qml
これは、画面を保持StackView QML成分を含みます。 initialItemはOverView画面を正しく表示するので、基本的には意図したとおりに動作していると言えます。
// import ...
import "screens"
StackView {
id: mainView
initialItem: OverviewScreen {}
}
QML /スクリーン/ OverviewScreen.qml
これは、GridViewのを含ん概要画面です。 GridViewのデリゲートをクリックすると、添付モデルの役割であるGridViewデリゲートの添付プロパティ 'Id'を持つItemDetailScreenのインスタンスを初期化します。
// import ...
import "screens"
Item {
// ...
GridView {
// model: ...
delegate: Item {
// ...
MouseArea {
anchors.fill: parent
onClicked: {
mainView.push({item: ItemDetailScreen, parameters: {id: Id}}) // ERROR
}
}
}
}
}
qml/screens/ItemDetailScreen.qml
これにはさまざまなQMLコンポーネントが含まれていますが、ルートコンポーネントとしてItemというよく知られているパターンに従います。
// import ...
Item {
// ...
}
問題は、GridViewのデリゲートのonClickedハンドラが実行されたとき、私はItemDetailScreenがMAINVIEWにプッシュされた行を参照する画面に印刷されたエラーを取得していますということです。
私はこのようなOverviewScreenにコンポーネントプロパティを追加する場合:property Component detailScreen: ItemDetailScreen {}
とも失敗mainView.push({item: detailScreen, properties: {id: Id}})
のように、その後、プッシュが成功したと私はしかし、私はまだ任意のプロパティを渡すことができないんだけど、画面を参照してくださいmainView.push(detailScreen)
へのプッシュを変更エラーが発生しました。
私の質問は本当にこれです:プロパティを持つItemDetailScreenのインスタンスをプッシュする正しい方法は何ですか?
'id'はプロパティではなく、あなたがしようとしていることは、正しい方法ではない可能性が最も高いです。 – GrecKo
可能な限り、適切な方法を参考にしてください。 – blockchaindev