在QML

时间:2017-09-28 14:40:09

标签: javascript c++ qt qml qt-quick

我使用C ++函数设置qml的属性(来自库,我看不到实现),使用此函数属性后 按钮按预期更改(我从c ++代码设置的值),但在文本上设置只是“我的名字是:”没有值。我的问题是,如何加入两个字符串 在QML javascript函数中,当一个是 qsTr()函数的结果,第二个是属性从C ++设置?

property string name: ""

function myFunction() {
   myText.text = qsTr("My Name is: ") + name;
   //myText.text = qsTr("My Name is: " + name);//another try
}
Text{
    id: myText
    text: ""
}
Button {
    text: name
}

按钮:John Smith

文字:My Name is:

2 个答案:

答案 0 :(得分:3)

问题不在于加入字符串,而是绑定。

当您执行myText.text = ... name时尚未设置。由于您正在执行命令式分配,因此如果name更改,则无法更新。

您可以与Qt.binding()保持绑定:

myText.text = Qt.binding(function() {return qsTr("My Name is: ") + name;});

或者,您可以在myText中声明性地执行此操作:

Text {
    id: myText
    text: qsTr("My Name is: ") + name
}

此处提供更多信息:http://doc.qt.io/qt-5/qtqml-syntax-propertybinding.html

答案 1 :(得分:0)

您可以使用args

执行此操作
    WITH nodedest AS 
      ( SELECT p.node,
               p.src
           FROM nodelist p
           WHERE p.node = {dest}
      )
    SELECT nodelist.node
    FROM nodedest  
    INNER JOIN nodelist 
      ON nodelist.node = nodedest.src