QML TextArea在onTextChanged内更改文本时崩溃



使用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
}
}

相关内容

  • 没有找到相关文章

最新更新