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



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

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

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

我是否正确,Qt5 没有准备好一些东西,我必须自己编写该文档的所有序列化代码?(我仍然希望完成这项工作的简单功能在哪里)

1.你遍历文本的每个字符。

2.你抓住了字符及其字符格式()

3.你得到属性。

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

5.最重要的是角色的位置和范围。您在第 1 个循环中获得该位置。

6.当您捕获字符格式时,您将插入到可哈希对象中,例如列表。 并且您不要忘记插入CharFormats位置。

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

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

1.您可以通过QTextDocument对象获得characterCount()

2.你循环characterCount()的范围

3.在执行此操作之前,您先制作一个QTextCursor对象。

4.将文本光标设置在第一个位置。(movePosition 方法 &Startmoveoperation & KeepAnchor flag)

5.您将光标移动到右边一个字符和另一个字符。

6.你通过tc.charFormat()tc.position()检查字符的字符格式()

7.但现在是三思而后行的时候了。字符格式始终是一堆字符。 你可能会得到一些相同的字符格式()。 你可以为此做好准备。我可以想一些方法,但是...您应该设置 QCharFormat 对象类型或属性 Id() 以提前指定QCharFormat(在编辑文档期间)。为什么不在保存和加载后将文本设置为属性。我希望您在调试和测试期间设法通过这里。

8.如果你得到一个字符格式,你检查对象类型()。

9.如果 objectType() 与搜索之前相同,则无需执行任何操作即可通过搜索引擎。

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

11.将文档()保存为 html 字符串。并保存 charFormat() 属性。

12.当您加载文档(),HTML 句子返回。 并加载属性。

  1. 你制作QTextCursor和setPosition(属性的位置预先保存。

  2. 您将 QTextCursor 移动到该位置并选择目标文本。

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

总结 如何指定 charFormat() 很重要。 你可以毫无问题地捕获charFormat,但charFormat()在某些范围内被采用。所以你必须区分范围。

1.目标文本在QTextCharFormat的属性中设置。 2.在同一 QTextCharFormat 的对象期间,您有 QTextCursor 传递。

我能想到他们...

我认为这对你有一些帮助。

相关内容

  • 没有找到相关文章

最新更新