2012-10-06 4 views

Antwort

22

In der QML-Umgebung, die arg() - Funktion, die bereits dem Schnurprototypen hinzugefügt wird, also können Sie grundsätzlich das string.arg() in verwenden QML wie C++.

Es gibt weniger Dokumentation darüber, aber ich bin sicher, dass es funktioniert in Qt 4.7 + QtQuick 1.1

Nehmen Sie bei Blick auf die Qt 5 doc: http://qt-project.org/doc/qt-5.0/qtqml/qml-string.html

+0

Gibt es einen Leistungsmangel? –

1

Argumente sind völlig unnötig in diesem Beispiel. In JS, haben wir Verkettung einfache Zeichenfolge, die auch Zahlen dazwischen unterstützt, so können Sie dies erreichen mit einem einfachen

var str = 'Number' + ' ' + 12 

Wenn Sie in Nicht-Zeichenketten wirklich Argumente wollen, können Sie einfach die %1 mit dem Ersatz ersetzen . QString::arg (mit einem Argument) ist nichts anderes als die folgenden:

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

So Ihr Code wird:

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

(Beachten Sie, dass diese Funktion nur %1 verarbeiten kann .. %9, während QString::arg verarbeiten kann zu %99.Dies erfordert ein bisschen mehr Logik, da %10 in meinem Code als %1 gedient ist.Dies ist nicht genau das gleiche wie QString::arg, aber es wird in den meisten Fällen ausreichen.Sie könnten auch eine stringArg schreiben Funktion, die mehrere Ersetzungsargumente nimmt, aber für die Einfachheit schrieb ich gerade dieses hier.)

13

nur verwenden:

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

Fantastisch! :). Danke – saeed