【问题标题】:How to store syntax-highlighted text?如何存储语法突出显示的文本?
【发布时间】:2016-11-02 15:52:08
【问题描述】:
我正在创建一个简单的文本编辑器,从头开始作为一个学校项目来突出显示语法。目前,我使用QStringList 来存储文本数据,但稍后我将添加语法高亮功能,我不知道应该如何存储数据。
一种选择是根本不保存颜色信息并不断地从代码解析器中获取它。但这可能效率很低。
也许更好的主意是每行都会有一些结构列表(包含颜色和字符串),用于存储文本中每个单词的颜色。但我也不确定这会有多快。
存储这些数据的最佳方式是什么?
谢谢
【问题讨论】:
标签:
c++
qt
syntax-highlighting
【解决方案1】:
我会建议两种方法。
方法一:用属性存储文本
将数据结构更改为结构容器。该结构将包含一个文本字符串和一个样式变量:
struct Text_With_Properties
{
std::string text;
Properties text_properties;
};
这可能会占用更多空间,并且可能不是最有效的方法。
方法 2:解析样式更改
许多编辑器会以普通字体显示文本,然后再进行一次解析以更改样式。例如,当在第二遍中找到 C++ 关键字时,编辑器将更改其样式。
此方法不需要更多的数据空间,但需要更多的处理时间。
【解决方案2】:
这个问题可能太宽泛了。但是您可能可以使用 HTML 标记。它还为您提供了一种简单的测试方法,因为您可以在浏览器中打开输出。