QML

2012-10-06 25 views
13

için QString :: arg() eşdeğeri ne anlama geliyor? Bazı argümanlarla meşgul olacak bir QML dizesi nasıl olabilir? Qt bu gibi bazı şey:QML

QString str("%1 %2"); 
str = str.arg("Number").arg(12);//str = "Number 12" 

cevap

22

QML ortamında, arg() işlevi string prototipine zaten eklendi, yani temelde string.arg() öğesini kullanabilirsiniz. QML, C++ gibi.

Orada bu konuda daha az dokümantasyon, ama o 4.7 + QtQuick 1.1

Al Qt 5 dokümana bakışta Qt çalışır eminim: http://qt-project.org/doc/qt-5.0/qtqml/qml-string.html

+0

Herhangi bir performans eksikliği var mı? –

1

Argümanlar bu örnekte tamamen gereksizdir. JS, aynı zamanda arasındaki sayıları destekler basit dize birleştirme var, yani gerçekten edebi olmayan dizeleri argümanları istiyorsanız basit

var str = 'Number' + ' ' + 12 

ile bunu başarabilirsiniz, sadece değiştirme ile %1 yerine . QString::arg (tek bağımsız değişkenle) başka bir şey değildir aşağıdadır:

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

Yani kod olur: QString::arg kadar işleyebilir ederken

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

(bu işlev sadece %1 .. %9 işleyebilir unutmayın %10 kodumda %1 olarak ayarlandığından bu biraz daha mantık gerektiriyor.Bu yüzden bu tam olarak QString::arg ile aynı değildir, ancak çoğu durumda yeterli olacaktır.Ayrıca stringArg yazabilirsiniz Birden fazla değiştirme argümanını alan fonksiyon, fakat basitlik için bunu buraya yazdım.)

13

sadece kullanın:

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

Fantastik! :). teşekkür ederim – saeed