QPlainTextEdit 子类中的 Qt 小部件中的代码折叠?

发布于 2024-11-11 03:06:14 字数 287 浏览 2 评论 0原文

我需要为我的小部件实现 Qt Creator 的代码折叠功能之类的功能。它是 QPlainTextEdit 的子类,具有一些额外的语法突出显示和行编号。它应该隐藏某些环境声明语句之间的文本,并在用户请求时再次显示它们。行编号不应受到影响。例如 .begin[signal] 和 .end[signal] 之间的文本。当用户单击位于数轴旁边细竖条上的小 ▼ 时,应该隐藏,然后再次单击 ▶ 将显示文本。 (像 Qt Creator、Eclipse 和大多数其他 IDE)

问题是我无法隐藏行并找到一种方法来管理行编号显示以避免陷阱。有什么建议吗?

I need to implement something like code folding feature of Qt Creator for my widget. Its a subclass of QPlainTextEdit with some additional syntax highlighting and line numbering. It should hide text between some environment declaration statement and when user requests show them again. Line numbering should not be affected. For example the text between .begin[signal] and .end[signal]. should be hidden when user clicks on the small ▼ placed on the thin vertical bar beside number lines, then clicking again on the ▶ will show text. (like Qt Creator, Eclipse and most of other IDEs)

The problem is that I can’t hide lines and find a way to manage line numbering display to avoid pitfall. Any suggestion?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

日记撕了你也走了 2024-11-18 03:06:14

为什么不使用 QScintilla 来代替?这是一个久经考验的编辑器,具有折叠功能。

要使用自己的规则折叠,您需要通过子类化 QsciLexer 来制作自己的词法分析器 QsciLexerCustom。我建议研究现有的词法分析器。即使您决定不使用 QScintilla,您也需要为您的规则实现相同的功能。

Why not use QScintilla instead? It is a well-tried editor with the folding feature.

For folding with your own rules you need to make your own lexer by subclassing QsciLexer of QsciLexerCustom. I suggest studying existing lexers. You will need to implement the same functionality for your rules even if you decide not to use QScintilla.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文