2014-10-31 91 views
1

主要目標:具有由定義到QML文件(如file_1.qml)中的項目設置的上下文屬性,以及將在運行時由其他QML文件中定義的項目(例如file_2.qml)。從QML代碼更改上下文屬性

問:是否可以在file_1.qml中設置新的上下文屬性,然後在file_2.qml中讀取此屬性?

(編輯)

例如,我需要在file_1.qml使用值從file_2.qml:

file_1.qml:

(...) 
UiController.but_generate__onClicked(
    getContextProperty("sbx_money_quantity_value"), 
    cal_daysoff.visibleMonth) 
(...) 

file_2.qml:

(...) 
SpinBox { 
     id: sbx_money_quantity 
     objectName: "sbx_money_quantity" 
     Layout.fillWidth: true 
     minimumValue: 0 
     maximumValue: 100000 
     value: 20000 


     onChanged: setContextProperty("sbx_money_quantity_value",value) 
    } 
(...) 

謝謝!

+0

你能告訴示例代碼,它描述了問題? – folibis 2014-11-01 11:12:59

+0

我添加了一個例子。謝謝 – pedromateo 2014-11-03 08:20:40

回答

1

由於範圍限制,您無法從另一個文件訪問某個文件中的項目。所以你只需要一些代理根對象,或者可能是一些全局單例對象,或者只是將一個對象的引用傳遞給另一個對象。例如:

File1.qml

Item { 
    property someValue: 1 
} 

File2.qml

Item { 
    property variant ref: null 
    onChanged: ref.someValue = 2; 
} 

main.qml

File1 { 
    item: file1 
} 
File2 { 
    item: file2 
    ref: file1 
}