【问题标题】:Qt WYSIWYG editor - non-editable/generated regionsQt WYSIWYG 编辑器 - 不可编辑/生成的区域
【发布时间】:2011-04-10 19:33:12
【问题描述】:

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

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

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

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

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

3.4.2 设计规范

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

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

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

我不知道如何继续,我将不胜感激有关此问题的任何建议。

【问题讨论】:

  • 我也许可以使目录和段落前缀的对象继承自 QTextObjectInterface。这至少会使它们不可编辑,但我不确定不可删除。而且似乎无法知道何时更改位置以更新节编号。

标签: qt editor widget wysiwyg qtextedit


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多