1.你循环你的文字每个字符。
2.你抓住了这个角色和它的 charFormat()
3.你得到属性。
4.因为属性最终是某物的值,int
, str
,... 所以你通过charFormat().property(1),(2),(3)
... 或properties()
5.最重要的是角色的位置和范围。您在第1个循环中获得位置。
6.当您捕获 CharFormats 时,您将插入一些可散列的对象,例如列表。& 并且您不要忘记插入 CharFormats 位置。
6.你保存你的文件和位置和属性。
我对您的解决方案的建议。
1.你可以得到characterCount()
对象QTextDocument
。
2.你循环的范围characterCount()
3.在做之前,你先做一个QTextCursor
对象。
4.你将textcursor设置在第一个位置。(movePosition方法& Start
moveoperation&KeepAnchor标志)
5.您将光标向右移动一个字符和另一个。
6.你检查字符的 charFormat()tc.charFormat()
和tc.position()
7.但现在是三思而后行的时候了。CharFormat 总是一堆字符。您可能会得到一些相同 CharFormat() 的字符。您可以为此做好准备。我可以考虑一些方法,但是...您应该设置 QCharFormat objectType 或 propertyId() 以预先指定QCharFormat
in Advance(在编辑文档期间)。为什么不将文本设置到属性中保存和加载后。我希望你在调试和调试期间设法通过这里。
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 传递。
我能想到他们...
我认为这对你有一些帮助。