23

いくつかの引数で占有される QML の文字列をどのように持つことができるのでしょうか? Qt では次のようなものがあります。

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

5 に答える 5

30

QML環境では、既に文字列プロトタイプにarg()関数が追加されているので、基本的にQMLではstring.arg()をC++と同じように使うことができます。

これに関するドキュメントは少ないですが、Qt 4.7 + QtQuick 1.1 で動作すると確信しています。

Qt 5 doc を見てみましょう: http://qt-project.org/doc/qt-5.0/qtqml/qml-string.html

于 2012-12-01T14:49:00.327 に答える
19

使用するだけです:

"foo%1".arg("bar");
于 2013-01-14T14:59:21.487 に答える
-1

この例では、引数はまったく不要です。JS には、間にある数値もサポートする単純な文字列連結があるため、単純な方法でこれを実現できます。

var str = 'Number' + ' ' + 12

非リテラル文字列の引数が本当に必要な場合は、を置き換えるだけで済みます%1QString::arg(引数が 1 つの場合) は、次のとおりです。

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

したがって、コードは次のようになります。

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

(この関数は%1..のみを処理でき%9、 whileQString::argは まで処理できることに注意してください。コードでは が a として扱われている%99ため、これにはもう少しロジックが必要です。したがって、これは とまったく同じではありませんが、ほとんどの場合はこれで十分です。複数の置換引数を取る関数を書くこともできますが、簡単にするために、ここではこれだけを書きました。)%10%1QString::argstringArg

于 2012-10-06T19:38:04.730 に答える
-1

jQueryプラグインでこれを行うことができるかもしれません:

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")
        }
     }
于 2012-10-06T14:03:22.377 に答える