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

时间:2018-03-11 15:26:56

标签: qt pyqt qt5 qtextedit qtextdocument

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

不幸的是,如果我将文档保存为html,则所有其他格式都将丢失。

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

我是对的,Qt5没有为它做好准备,我必须自己编写所有文档的序列化代码? (我仍然希望在哪里做简单的功能)

1 个答案:

答案 0 :(得分:0)

1。您循环每个字符输入文本。

2。然后您捕获了字符及其charFormat()

3。您将获得属性。

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

获取属性

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

6。捕获CharFormats时,将插入诸如hash之类的可哈希对象中。   &,并且您不会忘记插入CharFormats位置。

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

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

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

2。您循环characterCount()

的范围

3。在执行此操作之前,请创建一个QTextCursor对象。

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

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

6。您通过tc.charFormat()tc.position()来检查字符的charFormat()

7。但是现在该三思了。 CharFormat始终是一堆字符。   您可能会得到相同CharFormat()的一些字符。   您可以为此做准备。我可以考虑一下,但是...您应该设置QCharFormat objectType或propertyId()以便预先指定QCharFormat(在编辑文档期间)。为什么不设置将文本保存到属性中,以供保存和加载后使用。希望您在调试和调试过程中能够通过这里。

8。如果获得charFormat,并检查objectType()。

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

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

11。将document()保存为html字符串,并保存charFormats()属性。

12。当您加载document()时,html句子又回来了。    并加载属性。

  1. 创建QTextCursor和setPosition(属性的位置预先保存。)

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

  3. 您将再次采用charFormat属性,并最终采用。

摘要  如何指定charFormat()很重要。  您可以毫无问题地捕获charFormat。但是在一定范围内采用了charFormat(),因此必须区分范围。

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

我能想到他们...

我认为这对您有帮助。