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"
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"
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
Bir jQuery eklentisi ile bunu yapmak mümkün olabilir:
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")
}
}
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.)
Herhangi bir performans eksikliği var mı? –