Me pregunto cómo puedo tener una cadena en QML que estará ocupada con algunos argumentos? Algo como esto en Qt:¿Cuál es la equivalencia de QString :: arg() en QML
QString str("%1 %2");
str = str.arg("Number").arg(12);//str = "Number 12"
Me pregunto cómo puedo tener una cadena en QML que estará ocupada con algunos argumentos? Algo como esto en Qt:¿Cuál es la equivalencia de QString :: arg() en QML
QString str("%1 %2");
str = str.arg("Number").arg(12);//str = "Number 12"
En el entorno QML, la función arg() ya se agregó al prototipo de cadena, así que básicamente puede usar el string.arg() en QML al igual que C++.
Hay menos documentación acerca de esto, pero estoy seguro de que funciona en Qt 4.7 + 1.1 QtQuick
tomar por lo vistazo al Qt 5 doc: http://qt-project.org/doc/qt-5.0/qtqml/qml-string.html
que podría ser capaz de hacer esto con un plugin de 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")
}
}
argumentos son totalmente innecesario en este ejemplo. En JS, tenemos la concatenación de cadenas simple, que también es compatible con los números en el medio, por lo que se puede lograr esto con un simple
var str = 'Number' + ' ' + 12
Si realmente desea argumentos en cadenas no literales, puede simplemente reemplazar la %1
con la sustitución . QString::arg
(con un argumento) no es más que lo siguiente:
function stringArg(str, arg)
{
for(var i = 1; i <= 9; ++i)
if(str.indexOf('%'+i) !== -1)
return str.replace('%'+i, arg);
return str;
}
lo que el código se convierte en:
var str = "%1 %2"
str = stringArg(str, "Number")
str = stringArg(str, 12)
(Tenga en cuenta que esta función sólo puede manejar %1
.. %9
, mientras QString::arg
puede manejar hasta a %99
. Esto requiere un poco más de lógica, ya que %10
es como %1
en mi código. Así que esto no es exactamente lo mismo que QString::arg
, pero será suficiente en la mayoría de los casos. También podría escribir un stringArg
función que toma múltiples argumentos de reemplazo, pero por simplicidad acabo de escribir esto aquí.)
¿Hay alguna deficiencia en el rendimiento? –