2012-10-06 6 views

risposta

22

In ambiente QML, la funzione arg() è già stata aggiunta al prototipo di stringa, quindi in pratica è possibile utilizzare string.arg() in QML proprio come C++.

C'è meno documentazione su questo, ma sono sicuro che funziona in Qt 4.7 + 1.1 QtQuick

vorranno sguardo al Qt 5 doc: http://qt-project.org/doc/qt-5.0/qtqml/qml-string.html

+0

C'è qualche difetto di rendimento? –

1

argomenti sono del tutto inutile in questo esempio. In JS, abbiamo semplice concatenazione di stringhe che supporta anche i numeri in mezzo, in modo da poter raggiungere questo obiettivo con un semplice

var str = 'Number' + ' ' + 12 

Se si vuole veramente argomenti a stringhe non letterali, si può semplicemente sostituire il %1 con la sostituzione . QString::arg (con un argomento) non è altro che il seguente:

function stringArg(str, arg) 
{ 
    for(var i = 1; i <= 9; ++i) 
     if(str.indexOf('%'+i) !== -1) 
      return str.replace('%'+i, arg); 
    return str; 
} 

Così il codice diventa:

var str = "%1 %2" 
str = stringArg(str, "Number") 
str = stringArg(str, 12) 

(Si noti che questa funzione può gestire solo %1 .. %9, mentre QString::arg può gestire fino a %99. Ciò richiede un po 'più di logica, dal %10 è tepato come un %1 nel mio codice.Questo non è esattamente lo stesso di QString::arg, ma sarà sufficiente nella maggior parte dei casi.È anche possibile scrivere un stringArg funzione che prende più argomenti sostitutivi, ma per semplicità ho appena scritto questo qui.)

13

basta usare:

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

Fantastico! :). grazie – saeed

Problemi correlati