2011-05-31 100 views
2

我需要为我的小部件实现类似Qt Creator的代码折叠功能。它是QPlainTextEdit的一个子类,带有一些额外的语法高亮和行号。它应该隐藏某些环境声明语句和用户请求再次显示它们之间的文本。行号不应受到影响。例如.begin [signal]和.end [signal]之间的文本。当用户点击放在数字线旁边的细竖条上的小▼时,应该隐藏,然后再次点击▶将显示文本。 (如Qt Creator,Eclipse和大多数其他IDE)代码折叠从QPlainTextEdit中分类的Qt小部件?

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

回答

2

为什么不用QScintilla代替?这是一个经过良好尝试的折叠功能编辑器。

对于用自己的规则进行折叠,您需要通过将QsciLexerCustomQsciLexer分类来制作自己的词法分析器。我建议学习现有的词法分析器。即使您决定不使用QScintilla,您也需要为规则实施相同的功能。

+0

我想按自己的规则折叠文本。 QScintilla有可能吗? – 2011-05-31 19:53:20

+0

我编辑了我的答案。 – 2011-05-31 20:44:13

+0

目前我使用GNU srchighlite及其Qt端口srchighlite-qt进行语法高亮显示。搬到QScintilla我应该用QScintilla的取代突出机制,这将需要时间和精力...谢谢你:) – 2011-05-31 21:08:53