Qt QText编辑行号

Qt QTextEdit line numbers

本文关键字:编辑 QText Qt      更新时间:2023-10-16

我正在Qt中为GLSL编写代码编辑器,在显示QTextEdit的行号时遇到问题。我不支持Qt代码编辑器示例中的示例,但这部分

QTextBlock block = firstVisibleBlock();
int blockNumber = block.blockNumber();
int top = (int) blockBoundingGeometry(block).translated(contentOffset()).top();
int bottom = top + (int) blockBoundingRect(block).height();

并没有很好地与QTextEdit结合,因为我没有第一个BisibleBlock、blockBoundingGeometry和blockBouddingRect方法。我知道这些块保存在QTextDocument中,但该类也没有这些方法。

我试着搜索一个例子,但每次有人问这个问题时,他都会被引导到同一个链接。

有人能帮我吗?

感谢

此示例使用QPlainTextEdit并访问firstVisibleBlock()等受保护的函数。

看看QPlainTextEdit的源代码,看看IT是如何实现这些功能的。看起来它们是根据文档实现的(至少firstVisibleBlock()是这样做的)。

或者,复制示例并自己从QPlainTextEdit派生,不要使用QTextEdit