我有一个文本编辑器(QTextEdit)。我的编辑器中的某些单词包含附加的附加信息(即波形文件中该单词的两个相应的整数位置)。
它们作为QTextCharFormat对象的自定义属性存储在Python对象中(我使用以下代码附加它们:self.editor.textCursor().setCharFormat(QTextCharFormat().setProperty(MyPropertyID, myWordAttachment)
)
不幸的是,如果我将文档保存为html,则所有其他格式都将丢失。
所以,我想执行最简单的任务:使用所有格式保存我的文档,包括myWordAttachment(并从磁盘加载)。
我是对的,Qt5没有为它做好准备,我必须自己编写所有文档的序列化代码? (我仍然希望在哪里做简单的功能)
答案 0 :(得分:0)
1。您循环每个字符输入文本。
2。然后您捕获了字符及其charFormat()
3。您将获得属性。
4。因为属性最终是某个值,int
,str
,...
因此,您可以通过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句子又回来了。 并加载属性。
创建QTextCursor和setPosition(属性的位置预先保存。)
将QTextCursor移动到该位置,然后选择目标文本。
您将再次采用charFormat属性,并最终采用。
摘要 如何指定charFormat()很重要。 您可以毫无问题地捕获charFormat。但是在一定范围内采用了charFormat(),因此必须区分范围。
1。在QTextCharFormat的属性中设置目标文本。 2.您在同一QTextCharFormat的对象中传递了QTextCursor。
我能想到他们...
我认为这对您有帮助。