【问题标题】: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 标记。它还为您提供了一种简单的测试方法,因为您可以在浏览器中打开输出。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-05-23
        • 2023-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-29
        相关资源
        最近更新 更多