QML TextArea带有选择的彩色文本

时间:2016-09-16 21:59:21

标签: qt qml qtquick2 qtquickcontrols

我正在尝试使用QML TextArea完成以下行为:

  1. 我希望文本中的单个词的颜色不同
  2. 我希望"选择" -functions用于自动滚动(禁用用户交互)
  3. TextArea中有一个文本流,需要选择一个Word(突出显示)。要求用户在其他地方输入一些文本并按Enter继续(不是问题的一部分)。之后,选择跳转到下一个单词,最后选择的单词为绿色或红色。只有一小部分文本是可见的(几行,由TextArea高度管理 - 不是问题的一部分)我需要文本滚动,如果下一个单词超出该可见范围..因此选择是非常有用,因为用户的所有交互 - 滚动或选择或其他 - 都被禁用(禁用不是问题的一部分)

    我的主要问题是:如果我使用textFormat: TextEdit.RichText我可以轻松地为文本着色我喜欢它的方式(<font color=\"green\">{}</font>)但我不能使用&#34;选择&#34; -functions因为 - 正如我猜的那样 - 选择适用于&#34;明文&#34;并且不能对应&#34; richtext&#34; -selection?无论如何selectWord()等不起作用QTextCursor::setPosition: Position '-1' out of range就是结果。但是,如果我禁用RichText,我不知道如何为文本着色。也许我可以没有选择,如果我能检测到当前的单词 - 这将是蓝色等 - 并滚动,如果它从可见区域出来&#34;假&#34;选择行为,但这只是第三种选择。

    我真的要么知道如何为非富文本着色或如何在TextArea中选择富文本。

1 个答案:

答案 0 :(得分:2)

您可以使用QSyntaxHighlighter突出显示与选择无关的字词。有关详细信息,请参阅QQuickTextDocumentHow to implement rich text logic on QML TextEdit with QSyntaxHighlighter class in Qt