我正在开发一个WYSIWYG文档编辑器。编辑器是围绕Qt框架构建的,因为Linux / KDE是它将运行的主要平台。
到目前为止,我一直在使用QTextEdit小部件,并且已经进行了基本的文本编辑和格式化。但是我已经停止了如何实现以下要求:
文档分为多个标题级别,顶部必须有自动生成的目录。
您应该可以为文本段落选择样式(标题1,标题2,...,段落),如果选择标题样式,则该行的前缀为节号。
例如,包含样式“标题3”的文本“设计规范”的段落可能会显示为:
3.4.2设计规范
自动生成前缀部分编号“ 3.4.2 ”。当在其上方插入和删除标题时,节号应该更新。用户不应该自己修改或删除此前缀。如果他们确实删除了前缀,则该段落应该恢复为“段落”样式,而不是保留标题。
在插入/修改/删除标题时,应自动更新目录。用户也不应该修改或删除目录。
我坚持如何在我的编辑器中实现该功能。我想的可能是存储一个不可编辑范围的树(包括目录和每个前缀的范围),每次光标位置/当前选择改变时,如果选择重叠或者选择重叠,我将把QTextEdit控件设置为只读光标位于范围内。但是,每次修改某些内容时都存在保持所有这些范围最新(重建树)的问题,这通常是在WYSIWYG编辑器中。
我被困在如何继续,我将不胜感激任何有关此事的建议。