如何将javascript属性传递给不是文本或数字的qml对象。我想将该属性传递给设置属性文本的c ++属性值。
var component;
var gauge;
function createVerticalGauge(setWidth,setX,setY,setID,setText,setValue) {
component = Qt.createComponent("verticalbargauge.qml");
console.log(component.status)
if (component.status == Component.Ready)
finishCreation(setWidth,setX,setY,setID,setText,setValue);
else
component.statusChanged.connect(finishCreation);
}
function finishCreation(setWidth,setX,setY,setID,setText,setValue) {
if (component.status == Component.Ready) {
gauge = component.createObject(adaptronicDash, {"id": setID, "gaugetext": setValue,
"x": setX, "y": setY});
gauge.width = setWidth;
if (gauge == null) {
// Error Handling
console.log("Error creating object");
}
} else if (component.status == Component.Error) {
// Error Handling
console.log("Error loading component:", component.errorString());
}
}
通过此调用调用JS:
Component.onCompleted: CreateVerticalGaugeScript.createVerticalGauge(300,10,300,"map","MAP",Dashboard.MAP);
Dashboard.MAP 设置对象的Text属性。 如果直接在QML文件中创建对象,则使用Dashboard.MAP设置文本,但是脚本只有“0”。
Dashboard.MAP是一个来自类Dashboard的qreal,它为我的qml对象提供值:
Q_PROPERTY(qreal MAP READ MAP WRITE setMAP NOTIFY MAPChanged)
如何使用javascript传递Dashboard.MAP。在我的示例中, setValue 的值为 qml:undefined
答案 0 :(得分:1)
而不是传递Dashboard.MAP
,只将Dashboard
对象引用传递给函数。
然后,在创建属性对象时,请使用以下格式:
"gaugetext": Qt.binding(function(){return setValue.MAP})
(请记住,setValue
是Dashboard
)
这种方式gaugetext
将绑定到MAP
,并随之改变。