2017-11-20 26 views
0

私はしばらくこの周りを頭で囲み、いくつかのハッキングを思いついたが、どれも正しい道ではないようだ。うまくいけば、これは理にかなっている。 3つのqmlファイルがあるとします。QML QtObjectをqmlから別のQMLに渡す

まずQML:

... 
ListView { 
    id: patientList 
    model: patientModel 
    delegate: E3DPatientListItem { 
     onClicked: { 
      if (patientList.currentIndex !== index) 
      { 
       patientList.currentIndex = index 
       detailStackView.push("DetailPanel.qml", 
        { "view": view, "ptInfo": model }) 

...

DetailPanel:

... 
Page { 
    property QtObject ptInfo 
    Timeline { 
     ptInfo: ptInfo // <- how do I pass this to Timeline? 
... 

Timeline.qml

... 
Item { 
    property QtObject ptInfo // <- always null :(
... 
+1

タイムライン{ptInfo:parent.ptInfo}はどうですか?またはPage {プロパティエイリアスptInfo:timeline.ptInfo}? – Dinesh

+0

私はすべてを試したと思っていましたが、 'Timeline {ptInfo:parent.ptInfo}'は実際に動作します!どうもありがとうございました。 –

答えて

0
... 
Page { 
    property QtObject ptInfo 
    Timeline { 
     ptInfo: ptInfo // <- how do I pass this to Timeline? 
... 

ptInfo: ptInfoは何を達成していると思われますか?プロパティを独自の識別子にバインドしています。

シャドウイングを避けるために同じ識別子を使用しないでください。またはPageidを入力してからptInfo: pageid.ptInfoを入力してください。 parent.ptInfoオブジェクトが親プロパティを公開している限り、QtObjectであることに注意してください。

はしかし、あなたは本当に限り、タイムラインは常にページ内でインスタンス化されたとして、あなたがあるため、動的スコープのタイムライン内から直接ptInfoにアクセスすることができ、Timeline.qmlで財産QtObject ptInfoを持っている必要はありません。ダイナミックスコーププロパティは、特定のqmlファイルのルート要素で定義されているプロパティに対してのみ機能します。

// Obj1.qml 
Item { 
    property int test: 7 
    Obj2{} 
} 

// Obj2.qml 
Item { 
    Component.onCompleted: console.log(test) // it will work 
}