Qt:如何使用自定义属性保存 QTextEdit 内容

Qt: how to save QTextEdit contents with custom properties

我有一个文本编辑器 (QTextEdit)。我的编辑器中的某些单词包含附加信息(即,该单词在 wave 文件中的两个相应整数位置)。 它们作为 QTextCharFormat 对象的自定义属性存储在 Python 对象中(我用这样的代码附加它们:self.editor.textCursor().setCharFormat(QTextCharFormat().setProperty(MyPropertyID, myWordAttachment)

不幸的是,如果我将文档保存到 html,所有这些额外的格式都会丢失。

所以,我想执行最简单的任务:保存我的文档及其所有格式,包括 myWordAttachment(并从磁盘加载它)。

我说的对吧,Qt5 没有准备好,我必须自己编写所有文档的序列化代码? (我仍然希望完成工作的简单函数在哪里)

1.you 循环你的文本每个字符。

2.and 你捕捉到字符及其 charFormat()

3.and你得到属性。

4.Because 属性最终是某物的值,int,str,... 因此,您可以通过 charFormat().property(1),(2),(3)... 或 properties()

获得属性

5.The 最重要的是角色的位置 & range.You 在第一个循环中获得位置。

6.When 你抓住了 CharFormats,你插入到像列表这样的可散列对象中。 & 并且不要忘记插入 CharFormats 位置。

6.you 保存您的文档以及位置和属性。

我对您的解决方案的建议。

1.you可以通过QTextDocument对象得到characterCount()

2.you循环characterCount()

的范围

3.Before 这样做,你就制作了一个 QTextCursor 对象。

4.you 将文本光标设置在第一个位置。(movePosition 方法 & Start moveoperation & KeepAnchor 标志)

5.you 将光标向右移动一个字符和另一个。

6.you 通过 tc.charFormat()tc.position()

检查字符的 charFormat()

7.But是时候三思了。 CharFormat 总是一堆字符。 您可能会得到一些相同 CharFormat() 的字符。 您可以为 it.I 做准备,可以考虑一些方法,但是...您应该设置 QCharFormat objectType 或 属性Id() 以预先指定 QCharFormat(在编辑文档期间) .为什么不在保存后将文本设置到属性中&loading.I希望你能在调试&tring时通过这里。

8.if 你得到一个 charFormat,你检查 objectType()。

9.if objectType() 和搜索前一样,什么都不做就通过了搜索引擎

10.The 第二个重要的事情是调用 clearSelection() 每次搜索。

11.You 按原样保存您的 document() html strings.and 您保存 charFormats() 属性。

12.when 你加载了你的文档(),html 语句又回来了。 并加载属性。

  1. 你做的QTextCursor和setPosition(属性的位置是提前保存的。)

  2. 您将 QTextCursor 移动到该位置,然后您 select 目标文本。

  3. 你再次采用charFormat属性并结束

总结 重要的是如何指定 charFormat()。 您可以在没有任何 problem.but 的情况下捕获 charFormat charFormat() 在某些 range.So 中被采用,您必须区分范围。

1.The 目标文本在 QTextCharFormat 的 属性 中设置。 2.You 在同一个 QTextCharFormat 的对象中传递 QTextCursor。

我能想到他们...

我觉得对你有些帮助。