问题描述
|
我需要为小部件实现类似Qt Creator的代码折叠功能。它是QPlainTextEdit的子类,带有一些附加的语法突出显示和行编号。它应该在某些环境声明语句之间以及用户请求再次显示它们时隐藏文本。行号不应受到影响。例如,.begin [signal]和.end [signal]之间的文本。当用户单击位于数字线旁边细垂直条上的小▼时,应将其隐藏,然后再次单击▶将显示文本。 (例如Qt Creator,Eclipse和大多数其他IDE)
问题是我无法隐藏行,无法找到一种方法来管理行号显示以避免陷阱。有什么建议吗?
解决方法
为什么不使用QScintilla呢?这是一款经过精心设计的具有折叠功能的编辑器。
要使用自己的规则折叠,您需要通过将QsciLexerCustom的QsciLexer子类化来制作自己的词法分析器。我建议研究现有的词法分析器。即使您决定不使用QScintilla,也将需要为规则实现相同的功能。