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