如何存储突出显示语法的文本?

时间:2016-11-02 15:52:08

标签: c++ qt syntax-highlighting

我正在创建一个简单的文本编辑器,其语法突出显示为学校项目。现在,我使用QStringList来存储文本数据,但稍后我将添加语法突出显示功能,我不知道应该如何存储数据。

一种选择是根本不保存颜色信息并不断从代码解析器中获取颜色信息。但这可能效率很低。

也许更好的想法是,每一行都会有一些结构列表(包含颜色和字符串),这些结构将存储文本中每个单词的颜色。但我不太确定这会有多快。

存储这些数据的最佳方法是什么?

谢谢

2 个答案:

答案 0 :(得分:0)

我建议两种方法。

方法1:存储带有属性的文本
将数据结构更改为结构容器。该结构将包含文本字符串和样式变量:

struct Text_With_Properties
{
  std::string text;
  Properties  text_properties;
};

这可能会占用更多空间,可能不是最有效的方法。

方法2:解析样式更改
许多编辑器将以普通字体显示文本,然后为样式更改进行另一次解析。例如,在第二遍期间找到C ++关键字时,编辑器将更改其样式。

此方法不需要更多数据空间,但需要更多处理时间。

答案 1 :(得分:-2)

这个问题可能过于宽泛。但你可以使用HTML标记。它还为您提供了一种简单的测试方法,因为您可以在浏览器中打开输出。