我QTextDocument
从 HTML 文件中读取;给定一个QString
名为的 HTML 数据topicFileData
,我愿意topicFileTextDocument.setHtml(topicFileData);
。然后我想去掉所有的颜色信息,使整个文档只使用默认的前景和背景画笔。(我不想明确地将文本设置为白色背景上的黑色文本;我想从文档中删除颜色信息。)(背景信息:我需要这样做的原因是文档中的某些跨度被错误地设置为黑色前景色,而不仅仅是没有设置颜色信息,这会导致这些跨度在我的时候显示为黑底黑字当 Qt 将默认文本背景画笔更改为黑色而不是白色时,应用程序正在“深色模式”下运行。)
这是我尝试过的:
QTextCursor tc(&topicFileTextDocument);
tc.select(QTextCursor::Document);
QTextCharFormat noColorFormat;
noColorFormat.clearForeground();
noColorFormat.clearBackground();
tc.mergeCharFormat(noColorFormat);
不幸的是,这不起作用;看起来mergeCharFormat()
不明白我希望合并clearForeground()
和clearBackground()
操作以剥离这些属性。
当然,我可以这样做tc.setCharFormat(noColorFormat);
,这确实会正确剥离颜色属性;但它也会消除所有其他字符格式信息(字体等),这是不可接受的。
所以,理想情况下,我想找到一个 API,让我从QTextDocument
. 或者,我想我需要QTextDocument
一个一个地遍历所有 span,获取当前 span 的 char 格式,从格式中删除颜色属性,并将修改后的格式设置回 span。那很好;但我不知道如何以这种方式循环跨度。谢谢你的帮助。