2

我正在为 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 很好地结合。我知道这些块保存在 QTextDocument 中,但该类也没有这些方法。

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

有人可以帮我吗?

谢谢

4

1 回答 1

0

该示例使用QPlainTextEdit和访问firstVisibleBlock()等受保护的功能。

查看源代码QPlainTextEdit并了解 IT 为实现这些功能所做的工作。看起来好像它们是根据文档实现的(至少firstVisibleBlock()是这样)。

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

于 2012-08-24T11:32:50.427 回答