Мне интересно, как у меня может быть строка в QML, которая будет занята некоторыми аргументами? Что-то вроде этого в Qt:
QString str("%1 %2");
str = str.arg("Number").arg(12);//str = "Number 12"
Мне интересно, как у меня может быть строка в QML, которая будет занята некоторыми аргументами? Что-то вроде этого в Qt:
QString str("%1 %2");
str = str.arg("Number").arg(12);//str = "Number 12"
В среде QML функция arg() уже добавлена в прототип строки, поэтому в основном вы можете использовать string.arg() в QML, как С++.
Об этом меньше документации, но я уверен, что он работает в Qt 4.7 + QtQuick 1.1
Взгляните на документ Qt 5: http://qt-project.org/doc/qt-5.0/qtqml/qml-string.html
просто используйте:
"foo%1".arg("bar");
Возможно, вы сможете сделать это с помощью плагина 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
с несколькими аргументами замены, но для простоты я просто написал это здесь. )