2012-10-06 55 views

回答

22

在QML环境中,ARG()函数已经添加到字符串原型,所以基本上你可以使用string.arg()在QML就像C++一样。

有关于这个文件较少,但我敢肯定它工作在Qt的4.7 + 1.1 QtQuick

采取在看的Qt 5 DOC:http://qt-project.org/doc/qt-5.0/qtqml/qml-string.html

+0

是否有任何性能不足? –

1

参数在这个例子中完全没有必要。在JS,我们有简单的字符串连接,其还支持数字之间,所以你可以用一个简单的

var str = 'Number' + ' ' + 12 

做到这一点。如果你真的想在非文字字符串参数,你可以只用更换替代%1QString::arg(一个参数)无非是以下几点:

function stringArg(str, arg) 
{ 
    for(var i = 1; i <= 9; ++i) 
     if(str.indexOf('%'+i) !== -1) 
      return str.replace('%'+i, arg); 
    return str; 
} 

所以,你的代码就变成了:

var str = "%1 %2" 
str = stringArg(str, "Number") 
str = stringArg(str, 12) 

(请注意,此功能只能处理%1 .. %9,而QString::arg最多可处理到%99。这需要更多的逻辑,因为在我的代码中%10被认为是%1,所以这与QString::arg并不完全一样,但在大多数情况下它已经足够了,您也可以编写stringArg功能服用多种替代参数,但对于简单起见,我只是写在这里这一个。)

13

只需使用:

"foo%1".arg("bar"); 
+0

太棒了!:)。谢谢你 – saeed