1.你循环你的文本每个字符。
2.然后你抓住了这个字符和它的 charFormat()
3.你得到属性。
4.因为属性最终是某物的值,int,str,...
所以你通过charFormat().property(1),(2),(3)...或properties()获得属性
5.最重要的是角色的位置和范围。您在第1次循环中获得位置。
6.当您捕获 CharFormats 时,您将插入一些可散列的对象,例如列表。
& 并且您不要忘记插入 CharFormats 位置。
6.您保存您的文档以及位置和属性。
我对您的解决方案的建议。
1.你可以通过QTextDocument对象获取characterCount()。
2.你循环characterCount()的范围
3.在做之前,你先创建一个QTextCursor 对象。
4.你将textcursor设置在第一个位置。(movePosition方法&Startmoveoperation&KeepAnchor标志)
5.您将光标向右移动一个字符和另一个字符。
6.你通过tc.charFormat()和tc.position()检查角色的charFormat()
7.但现在是三思而后行的时候了。 CharFormat 总是一堆字符。
您可能会得到一些相同 CharFormat() 的字符。
您可以为此做好准备。我可以考虑一些方法,但是...您应该设置 QCharFormat objectType 或 propertyId() 以提前指定QCharFormat(在编辑文档期间)。为什么不设置文本保存和加载后进入属性。我希望你在调试和调试期间设法通过这里。
8.如果你得到一个charFormat,你检查objectType()。
9.如果objectType()与Before searched相同,则不做任何事情通过搜索引擎。
10.第二个重要的事情是每次搜索调用clearSelection()。
11.您将 document() 保存为 html 字符串。然后保存 charFormats() 属性。
12.当你加载你的 document() 时,html 语句又回来了。
并加载属性。
你做QTextCursor和setPosition(提前保存的属性位置。)
将 QTextCursor 移动到该位置,然后选择目标文本。
你再次采用 charFormat 属性并结束。
总结
重要的是如何指定 charFormat()。
你可以毫无问题地捕捉到charFormat。但是charFormat()是在某个范围内采用的。所以你必须区分范围。
1.目标文本在QTextCharFormat的属性中设置。
2.在同一个QTextCharFormat的对象中你有QTextCursor pass。
我能想到他们……
我认为这对你有一些帮助。