我有一个像这样的简单TextArea:
TextArea {
id: my_text_area
anchors.margins: 5
anchors.fill: parent
textFormat: TextEdit.RichText
}
用户可以在TextArea中输入文本。我现在想要在输入的文本中找到模式,并通过将它们加粗,加粗或加下划线来突出显示它们。
我将文本传递给这样的js函数:
Functions.doSomething(my_text_area.text)
我遇到的问题是: 我正在搜索文本中的特定模式,并且RichText的整个html标记会混淆模式。
是否有我错过的功能允许我以PlainText格式传递文本?或者是否有一些“简单”的方法来删除所有的HTML标记与javascript函数? 或者还有另一种解决问题的方法吗?
到目前为止我尝试了什么:
我尝试在传递文本之前将textFormat设置为TextEdit.PlainText,但这不起作用。我还想过有一个RichText TextArea和一个PlainText TextArea并且一次只显示一个(例如用户在PlainText区域输入文本,程序在RichText区域显示),但问题是用户应该能够在突出显示后编辑文本。
答案 0 :(得分:3)
不要将area.text传递给函数,它提供TextEdit的原始内容,无论是纯文本还是富文本。如果您的区域有RichText,并且您想使用它的简单表示,请使用:
area.getText (0, area.length)
它将为您提供内容的字符,不包括HTML格式标签。 但是,您需要自己进行纯文本位置和格式化文本的映射。
因此,如果你需要用' foo '替换'foo',你必须在area.text上使用一些RegExp或其他任何东西。