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

contains(regexp) on what is possibly a Qstring/string in QML

本文关键字:Qstring string regexp 关于 QML 包含      更新时间:2023-09-26

我在QML中有一个代码片段,应该在屏幕中查找regexp "Calling"。文本,如果没有找到,只有这样才会改变屏幕文本。不幸的是,在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/桌面/例子/cellphone.qml: 127:TypeError:表达式screen.text.toString().startsWith的结果[undefined]不是函数

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

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

因为函数"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

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