1

我正在开发一个所见即所得的文档编辑器。该编辑器是围绕 Qt 框架构建的,因为 Linux/KDE 是它将运行的主要平台。

到目前为止,我一直在使用 QTextEdit 小部件,并且已经获得了基本的文本编辑和格式设置。但是,我对如何实现以下要求陷入了停顿:

一个文档被分成多个级别的标题,并且顶部必须有一个自动生成的目录。

您应该能够为一段文本(标题 1、标题 2、...、段落)选择样式,如果您选择标题样式,则该行以节号为前缀。

例如,包含文本“设计规范”且样式为“标题 3”的段落可能显示为:

3.4.2 设计规范

自动生成带前缀的节号“ 3.4.2 ”的位置。当在其上方插入和删除标题时,节号应更新。用户不应自己修改或删除此前缀。如果他们确实删除了前缀,则该段落应恢复为“段落”样式,而不是保留标题。

随着标题被插入/修改/删除,目录应该自动更新。用户也不应该能够修改或删除目录。

我被困在如何在我的编辑器中实现该功能。我正在考虑存储一棵不可编辑范围的树(包括目录和每个前缀的范围),并且每次光标位置/当前选择更改时,如果选择重叠,我会将 QTextEdit 控件设置为只读或光标在一个范围内。但随之而来的问题是,每次修改某些内容时都要使所有这些范围保持最新(重建树),这在所见即所得的编辑器中很常见。

我被困在如何继续下去,我将不胜感激有关此事的任何建议。

4

1 回答 1

0

IMO 您不需要使用编辑器添加这些数字:只需使用 CSS 声明它们并让 HTML 渲染器添加/显示它们。

于 2010-09-12T22:41:18.820 回答