QPlainTextEdit 子类中的 Qt 小部件中的代码折叠?
我需要为我的小部件实现 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
为什么不使用 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.