2017-06-15 23 views
0

dial1の値が変更された場合、別のqmlにあるdial2に同じ値が反映されるように、2つのダイヤル要素をバインドしようとしています。2つの異なるqmlファイルから2つの要素をバインドする

QMLは私には新しく、私は多くの側面を知らない。しかし、私はこれに純粋なQMLを使用したいと思います。

//file1.qml 

dial{ 
id: dial1 
} 



//file2.qml 

dial{ 
id: dial2 
} 

第2に、私は、同じシナリオのために双方向バインドをしたいと思っています。

+0

異なるファイルはありません。 QMLアプリケーションは、QMLオブジェクトのツリーです。したがって、ツリー内にこのオブジェクトを意味するものではないqmlファイルがあるとします。これは単なるプロトタイプなので、このオブジェクトのインスタンスを最初に作成する必要があります。あなたの2つのオブジェクトとそれらの間の関係をどのように表示しますか? – folibis

+0

私は何を達成しようとしているのか正確には分かりませんが、両方のコンポーネントを同じファイルに作成できます(main.qmlとしましょう)。次に、プロパティをmain.qmlで作成したものと同じプロパティにバインドすることができます。変更は両方のコンポーネントに反映されます。 –

+0

@folibis私は '// CustomDial.qml'を持っています。そして、このコンポーネント' CustomDial {} 'を** TABページの2つの場所** **オブジェクトとして使用しています。私はそれぞれのタブごとにそれぞれ別々のqmlファイルを持っています。今、私は両方の 'CustomDial Object'を2つの異なるタブに接続して、1つが変更された場合にもう一方が変更されるようにしたいと思います。 – ryuk

答えて

0

いくつかの場所では、両方のファイルをインスタンス化します。それがTabViewと仮定しましょう。これは、共有値を保持するTabViewにプロパティを追加することによって、2つのファイル間の接続を作成するポイントです。
sharedValueを持つプロは、2つのファイルがインスタンス化される時刻が異なる可能性があるので、file1のインスタンスを破棄して数分後にfile2のインスタンスを作成すると、 。

TabView { 
    property int sharedValue 
    File1 { 
     id: file1 
    } 
    File2 { 
     id: file2 
    } 
} 

は、その後、あなたはthis on bidirectional bindingsを読み、共有の値にダイヤルの2つの露出値をバインドします。あるいは、プロパティsharedValueを省略し、両方の公開値の間に双方向バインディングを直接インストールすることもできます。あなたはバインディングで値を変更しないよう、もちろん、必要なもの

は、ダイヤルの値を公開するということですので、あなたのファイルは、私は、限り

Tab { 
    property alias dialValue: dial.value // now you can access the dial's value via this new property. 
    CustomDial { 
     id: dial 
    } 
} 

を見てする必要があります2つのBinding -Objectを使用して、双方向バインディングをインストールすることをお勧めします。

+0

あなたの説明は、この双方向バインディングの概念を学ぶために私を助けました。私は実際に私がTabViewを持っていることを忘れて、これは私を台無しにした。良い仕事を続けてください。ありがとうございました。 – ryuk

関連する問題