我想知道如何在QML中有一个字符串将被一些参数占用?一些这样的事在Qt的:什么是QML QString :: arg()在QML中的等价性
QString str("%1 %2");
str = str.arg("Number").arg(12);//str = "Number 12"
我想知道如何在QML中有一个字符串将被一些参数占用?一些这样的事在Qt的:什么是QML QString :: arg()在QML中的等价性
QString str("%1 %2");
str = str.arg("Number").arg(12);//str = "Number 12"
在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
你也许可以用jQuery插件来做到这一点:
http://docs.jquery.com/Plugins/Validation/jQuery.format
import "jQuery.js" as JQuery
Page {
property string labelStub: "hello {0}"
Label {
text: JQuery.validator.format(labelStub, "world")
}
}
参数在这个例子中完全没有必要。在JS,我们有简单的字符串连接,其还支持数字之间,所以你可以用一个简单的
var str = 'Number' + ' ' + 12
做到这一点。如果你真的想在非文字字符串参数,你可以只用更换替代%1
。 QString::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
功能服用多种替代参数,但对于简单起见,我只是写在这里这一个。)
是否有任何性能不足? –