2017-06-15 74 views
0

我想綁定兩個dial元素,例如,如果dial1值被更改,相同的值將反映在另一個qml中的dial2中。從兩個不同的qml文件中綁定兩個元素

QML對我來說是新的,我不太瞭解這方面。但我想在這個上使用純粹的QML,沒有C,C++這些東西。

//file1.qml 

dial{ 
id: dial1 
} 



//file2.qml 

dial{ 
id: dial2 
} 

其次,我想有相同的情況發生雙向綁定。

+0

沒有這樣的概念 - 不同的文件。 QML應用程序是QML對象的樹。所以如果你有一些qml文件在樹中並不代表這個對象。它只是一個原型,所以你應該首先創建這個對象的實例。告訴我們你的2個物體和它們之間的關係。 – folibis

+0

我不知道你想要完成什麼,但是你可以在同一個文件中創建兩個組件(比如說main.qml)。然後你可以將它們的屬性綁定到在main.qml中創建的同一個屬性。任何修改都將反映在這兩個組件上。 –

+0

@folibis我有'// CustomDial.qml',然後我在不同的TAB頁面的兩個地方使用這個組件'CustomDial {}'作爲**對象。我有每個選項卡的每個單獨的qml文件。現在我想連接這兩個'CustomDial對象'這是在兩個不同的選項卡,如果一個改變了,另一個將被改變。 – ryuk

回答

0

在某些地方你會實例化這兩個文件。我們假設它是一個TabView。這是您將通過將屬性添加到將保存共享值的TabView來建立兩個文件之間的連接的點。
擁有sharedValue的專業版是,兩個文件將被實例化的時間可能不同,因此如果在幾分鐘後銷燬file1的實例並創建file2的實例,則仍然可以獲得該值。

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

然後,你讀this on bidirectional bindings和刻度盤的兩個露出值綁定到所述共享值。您也可以省略屬性sharedValue並直接在兩個暴露值之間安裝雙向綁定。

什麼是必要的,當然,是你暴露在錶盤的價值,所以你的文件將需要尋找

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

只要你不綁定改變價值觀,我建議使用兩個Binding -Object來安裝雙向綁定。

+0

你的解釋幫助我學習了這種雙向約束的概念。我實際上忘了我有TabView,並且這讓我感到困惑。保持良好的工作。謝謝。 – ryuk

相關問題