QML:将Rich Text作为纯文本传递

时间:2013-10-09 06:59:45

标签: javascript qml

我有一个像这样的简单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区域显示),但问题是用户应该能够在突出显示后编辑文本。

1 个答案:

答案 0 :(得分:3)

不要将area.text传递给函数,它提供TextEdit的原始内容,无论是纯文本还是富文本。如果您的区域有RichText,并且您想使用它的简单表示,请使用:

area.getText (0, area.length) 

它将为您提供内容的字符,不包括HTML格式标签。 但是,您需要自己进行纯文本位置和格式化文本的映射。

因此,如果你需要用' foo '替换'foo',你必须在area.text上使用一些RegExp或其他任何东西。