Scintilla是一个免费、跨平台、支持语法高亮的编辑控件。它完整支持源代码的编辑和调试,包括语法高亮、错误指示、代码完成(code completion)和调用提示(call tips)。能包含标记(marker)的页边(margin)可用于标记断点、折叠和高亮当前行。而QScintilla是Scintilla在QT上的移植。使用该库可以更为方便的开发Qt程序。
下面以windows开发为例:
解压,在Qt4Qt5目录,用QtCreator打开qscintilla.pro,构建项目。
生成qscintilla2_qt5.lib或.a文件(本例子使用Qt5.7.1 MSVC2013)
1、创建QWidget工程
在.pro文件添加头文件以及动态链接库的引用:
INCLUDEPATH += C:/Users/pan/Desktop/QScintilla_gpl-2.10.1/Qt4Qt5
LIBS += -LC:/Users/pan/Desktop/QScintilla_gpl-2.10.1/build-qscintilla-Desktop_Qt_5_7_1_MSVC2013_64bit-Debug/debug/ -lqscintilla2_qt5d
或者不用添加INCLUDEPATH,直接将Qt4Qt5目录中的Qsci目录拷贝到工程中。
2、添加用到的头文件
//QsciScintilla作为QWidget的控件,需要添加该控件的头文件
#include
//以python语法作为例子,该语法分析器的头文件
#include
//设置代码提示功能,依靠QsciAPIs类实现
#include
3、设置具体功能代码
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
QsciScintilla *editor=new QsciScintilla(this);
//设置语法
QsciLexerPython *textLexer = new QsciLexerPython;//创建一个词法分析器
editor->setLexer(textLexer);//给QsciScintilla设置词法分析器
//行号提示
editor->setMarginType(0,QsciScintilla::NumberMargin);//设置编号为0的页边显示行号。
editor->setMarginLineNumbers(0,true);//对该页边启用行号
editor->setMarginWidth(0,15);//设置页边宽度
//代码提示
QsciAPIs *apis = new QsciAPIs(textLexer);
apis->add(QString("import"));
apis->prepare();
editor->setAutoComplet