使用TextArea时,我需要使用正则表达式进行语法高亮显示。一切正常,直到程序开始崩溃,因为一个错误:
纯虚方法调用在没有活动异常的情况下终止调用
在详细研究了这个问题之后,我得出了一些可能有助于答案的结论:
在这个例子中,代码从来没有达到测试,并且出现了一个巨大的递归
onTextChanged: {
text = "35" -> fall there
console.log("test")
}
接下来,我修复了这个问题,一切正常,没有递归
onTextChanged: {
if(!processing) {
processing = true
text = "35"
}
processing = false
console.log("test")
}
但是我需要处理原始文本,当我试图添加一些内容或使用它时,一切都与上面所示的错误有关
onTextChanged: {
if(!processing) {
processing = true
(text = text + " word") or just (text = text)
}
processing = false
console.log("test") -> fall after there, maybe in destructor
}
您可以监听键释放信号来重置处理标志。下面是一个基本的例子:
TextArea {
property bool processing: false
onTextChanged: {
if (!processing) {
processing = true
text = text + "word"
}
}
Keys.onReleased: {
processing = false
}
}