如何为 QTextEdit 添加内联注释?

How to add inline annotations for QTextEdit?

如何像在 Qt Creator 中一样添加内联注释?我正在使用 QTextEdit 小部件。

这是带有内联注释演示的屏幕截图。

我觉得...

起初,

让我们接>一个sa爸爸;行的注释。

预期';'

此邮件是只读邮件。 你可以通过任何方式捕获目标块。

例如, QTextCursor 可以使用带 EndOfLine、KeepAnchor 标志的 movePosition 方法搜索并捕获最后一个字符。

如果捕捉到的文本不是“;”,你就会发出这样的注释。

QTextEdit 始终具有其 QTextDocument 对象。通过document()方法得到。

这个 class 有 findBlock() 方法。

无论如何,应该使用QTextEditQTextDocumentQTextCursor来指定目标位置和矩形范围。

因为注解是只读的,所以你覆盖QTextEdit的paintEvent方法就可以了。

然后你制作了一个绘画对象 (QPainter)。

painter 方法有 drawImage("The image of pop-up" 在第一个位置") 和 drawText.

painter 有 setBrush,setPen 方法在 QColor()

中设置红色

您可以使用 QTextEdit 的 cursorRect() 方法并捕获左上角的近似位置以呈现文本,因为 DrawImage 和 DrawText 方法需要 rects 作为它们的参数,所以它非常 important.This cursorRect()方法可以结合 QTextCursor pointer.

你用QFontMetrics等方法测量后在矩形上加上文字的宽度,用于查看注释句子的所有范围。

如果你加上“;”用于修复代码的字符,研究行并删除注释。(可能我认为在 paintEvent 操作中切换写入或删除标记是很好的。)

提前做好各类注释文字(按自己的规律),并计划好何时何地使用。