содержит (регулярное выражение), что, возможно, является Qstring / строкой в ​​QML - PullRequest
3 голосов
/ 13 июля 2011

У меня есть фрагмент кода в QML, который должен искать регулярное выражение «Вызов» в screen.text, и если он не найден, только тогда он меняет 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
        }
    }

Я получаю сообщение об ошибке:

файл: /// home / arnab / workspace / desktop / examples / cellphone.qml: 127: TypeError: Результат выражения 'screen.text.toString (). startWith' [undefined] не является функцией.

Ответы [ 3 ]

4 голосов
/ 13 июля 2011

Вы должны использовать функции Javascript в обработчике:

        onClicked:{
        var patt = /^Calling/;
        if(patt.test(screen.text))
            return;
        else
            screen.text = "Calling " + screen.text
    }
0 голосов
/ 13 июля 2011

Как и два других ответа указывают: toString() дает строку JavaScript, а не QString, а строка JavaScript не имеет startsWith().Используйте один из показанных обходных путей.

0 голосов
/ 13 июля 2011

Потому что функция "setsWith" не является стандартной функцией.

Не могу сказать, можете ли вы использовать прототипы в 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

...