我正在为 Qt 中的 GLSL 编写代码编辑器,但在显示 QTextEdit 的行号时遇到了问题。我理解 Qt Code Editor Example 中的示例但是这部分
QTextBlock block = firstVisibleBlock();
int blockNumber = block.blockNumber();
int top = (int) blockBoundingGeometry(block).translated(contentOffset()).top();
int bottom = top + (int) blockBoundingRect(block).height();
考虑到我没有 firstBisibleBlock、blockBoundingGeometry 和 blockBoundingRect 方法,因此与 QTextEdit 的结合并不好。我知道这些 block 保存在 QTextDocument 中,但该类也没有这些方法。
我尝试搜索示例,但每次有人问这个问题时,他都会被定向到同一个链接。
谁能帮帮我?
谢谢
最佳答案
该示例使用 QPlainTextEdit
并访问 firstVisibleBlock()
等 protected 函数。
查看QPlainTextEdit
的源代码,了解 IT 是如何实现这些功能的。看起来它们是根据文档实现的(至少 firstVisibleBlock()
是这样)。
或者,复制示例并自己从 QPlainTextEdit
派生,不要使用 QTextEdit
。
关于c++ - Qt QTextEdit 行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12108221/