2017-05-30 43 views
2

創建我有加載另一個QML通行證屬性對象由QML裝載機

Loader { id: gaugeLoader } 

PieMenu { 
    id: pieMenu 

    MenuItem { 
     text: "Add Bar Gauge" 
     onTriggered: gaugeLoader.source = "qrc:/Gauges/horizontalBarGauge.qml" 
    } 
    MenuItem { 
     text: "Action 2" 
     onTriggered: print("Action 2") 
    } 
    MenuItem { 
     text: "Action 3" 
     onTriggered: print("Action 3") 
    } 
} 

我如何可以傳遞參數來設置加載QML的IDwidthheight等一個QML Loader

回答

3

方法1:Loader::setSource

可以使用Loader::setSource(url source, object properties)函數來設置施工過程中的屬性,例如:

gaugeLoader.setSource("qrc:/Gauges/horizontalBarGauge.qml", {"width": 100, "height": 100}); 

注意,你不能設置id attribute以這種方式,因爲它是不是一個普通的屬性屬性:

一旦一個對象實例我s創建時,其id屬性值 的值不能更改。雖然它可能看起來像普通屬性,但其ID爲 屬性不是普通屬性屬性,並且對其適用特殊語義 ;例如,在上例中無法訪問myTextInput.id 。

property alias gauge: gaugeLoader.item 

方法2::相對幾何關係到Loader對象

作爲替代方案,可以設置在widthheight

相反,可以按如下方式創建屬性別名Loader對象,並指定horizontalBarGauge.qml相對於其父項的寬度和高度,即Loader對象。

property alias gauge: gaugeLoader.item 
Loader { 
    id: gaugeLoader 
    width: 100 
    height: 100 
} 

QRC:/Gauges/horizo​​ntalBarGauge.qml:

Item { 
    anchors.fill: parent 
}