6

QMLにコードスニペットがあり、screen.textで正規表現「Calling」を検索する必要があります。見つからない場合は、screen.textが変更されます。残念ながら、QML/QStringドキュメントではドキュメントが明確ではありません。 。

  Button{
        id: call
        anchors.top: seven.bottom
        anchors.left: seven.left

        text: "Call"
        width: 40

        onClicked:{
            if(screen.text.toString().startsWith("Calling" , false))
                return;
            else
                screen.text = "Calling " + screen.text
        }
    }

私が得るエラーは次のとおりです:

file:///home/arnab/workspace/desktop/examples/cellphone.qml:127:TypeError:式の結果'screen.text.toString()。startsWith'[undefined]は関数ではありません。

4

3 に答える 3

6

ハンドラーでJavascript関数を使用する必要があります。

        onClicked:{
        var patt = /^Calling/;
        if(patt.test(screen.text))
            return;
        else
            screen.text = "Calling " + screen.text
    }
于 2011-07-13T12:23:59.810 に答える
1

他の2つの答えと同様に、次のように示されますtoString()。JavaScript文字列ではなくJavaScript文字列を提供し、JavaScript文字列には。QStringがありませんstartsWith()。示されている回避策の1つを使用してください。

于 2011-07-13T15:42:05.350 に答える
1

関数「startsWith」は標準関数ではないためです。

QML JSでプロトタイプを使用できるかどうかはわかりませんが、次のコードを使用しています。

String.prototype.startsWith = function(str) 
{return (this.match("^"+str)==str)}

またはのみ

if(screen.text.toString().match("^Calling")==screen.text.toString())

詳細はこちら:http ://www.tek-tips.com/faqs.cfm?fid = 6620

于 2011-07-13T12:21:35.500 に答える