4

我有一个像这样的简单 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 标记弄乱了这些模式。

是否有我错过的功能允许我以纯文本格式传递文本?还是有一些“简单”的方法可以使用 javascript 函数删除所有 html 标记?还是有其他解决问题的方法?

到目前为止我尝试了什么:

在传递文本之前,我尝试将 textFormat 设置为 TextEdit.PlainText,但这不起作用。我还考虑过拥有一个 RichText TextArea 和一个 PlainText TextArea 并且一次只显示一个(例如,用户将文本输入到 PlainText 区域,程序将其显示在 RichText 区域中),但问题是用户应该文本被突出显示后就可以对其进行编辑。

4

1 回答 1

5

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

area.getText (0, area.length) 

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

因此,如果您需要将 'foo' 替换为 ' foo ',无论如何都必须在 area.text 上进行,使用一些 RegExp 或其他任何东西。

于 2013-10-14T11:19:05.073 回答