Javascript 包含(regexp)在QML中可能是Qstring/string的内容
我在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中使用原型,但您使用以下代码: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”不
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
}