我想知道如何在QML中使用一些字符串来填充一些参数?在Qt中有这样的事情:
QString str("%1 %2");
str = str.arg("Number").arg(12);//str = "Number 12"
答案 0 :(得分:24)
在QML环境中,arg()函数已经添加到字符串原型中,所以基本上你可以像Q ++一样在QML中使用string.arg()。
关于此的文档较少,但我确信它适用于Qt 4.7 + QtQuick 1.1
看看Qt 5 doc:http://qt-project.org/doc/qt-5.0/qtqml/qml-string.html
答案 1 :(得分:15)
只需使用:
"foo%1".arg("bar");
答案 2 :(得分:1)
此示例中完全没有参数。在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
。这需要更多逻辑,因为{{ 1}}在我的代码中被设为%10
。所以这与%1
不完全相同,但在大多数情况下它都足够了。你也可以写一个QString::arg
函数采取多个替换参数,但为了简单起见,我在这里写了这个。)
答案 3 :(得分:0)
您可以使用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")
}
}