Javascript 包含(regexp)在QML中可能是Qstring/string的内容

Javascript 包含(regexp)在QML中可能是Qstring/string的内容,javascript,qt,qml,qstring,qt-quick,Javascript,Qt,Qml,Qstring,Qt Quick,我在QML中有一个代码段,它应该在screen.text中查找regexp“Calling”,如果找不到它,它只会更改screen.text。不幸的是,QML/QString中的文档不清楚 我得到的错误是: file:///home/arnab/workspace/desktop/examples/cellphone.qml:127: TypeError:表达式“screen.text.toString().startsWith”的结果 [未定义]不是一个函数 因为函数“startsWith”不

我在QML中有一个代码段,它应该在screen.text中查找regexp“Calling”,如果找不到它,它只会更改screen.text。不幸的是,QML/QString中的文档不清楚

我得到的错误是:

file:///home/arnab/workspace/desktop/examples/cellphone.qml:127: TypeError:表达式“screen.text.toString().startsWith”的结果 [未定义]不是一个函数

因为函数“startsWith”不是标准函数

无法说明是否可以在QML JS中使用原型,但您使用以下代码:

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

if(screen.text.toString().match(“^Calling”)==screen.text.toString())


此处需要阅读更多内容:

您必须在处理程序中使用Javascript函数:

        onClicked:{
        var patt = /^Calling/;
        if(patt.test(screen.text))
            return;
        else
            screen.text = "Calling " + screen.text
    }

与其他两个答案一样,答案表明:
toString()
给出了一个JavaScript字符串,而不是
QString
,并且JavaScript字符串没有
startsWith()
。使用所示的解决方法之一

        onClicked:{
        var patt = /^Calling/;
        if(patt.test(screen.text))
            return;
        else
            screen.text = "Calling " + screen.text
    }