2012-10-06 29 views

Respuesta

22

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

+0

¿Hay alguna deficiencia en el rendimiento? –

1

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í.)

13

sólo tiene que utilizar:

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

¡Fantástico! :). Gracias – saeed

Cuestiones relacionadas