Windows10下Qscintilla的安装及简介

本文详细介绍QScintilla在Qt环境下的安装、编译及配置过程,包括下载、环境变量设置、qmake和mingw-make使用、项目文件配置等步骤。并提供在QWidget工程中集成QScintilla的例子,展示如何设置语法高亮、行号、代码提示等功能。

本文参照  

Qsciscintilla的下载和安装:https://www.2cto.com/kf/201808/775066.html

创建QWidget工程:https://www.cnblogs.com/pinking/p/7788447.html 

QT配置Qscitinlla:  https://blog.csdn.net/qq_36689119/article/details/94716890

Qt动态库的链接问题:https://blog.csdn.net/luoyayun361/article/details/79435364

Qscitinlla的介绍

Scintilla是一个免费、跨平台、支持语法高亮的编辑控件。它完整支持源代码的编辑和调试,包括语法高亮、错误指示、代码完成(code completion)和调用提示(call tips)。能包含标记(marker)的页边(margin)可用于标记断点、折叠和高亮当前行,我们常用的Notepad++就是基于这个库开发的。http://www.scintilla.org。而QScintilla是Scintilla在QT上的移植。下面以windows开发为例:

Qscitinlla下载地址: https://riverbankcomputing.com/software/qscintilla/download

Qscitinlla的安装及其编译

1.目录结构

Qt4Qt5 编译文件夹, 生成对应的DLL文件
designer-Qt4Qt5相关的设计师插件的编译文件夹
example-Qt4Qt5简单的示例文件夹
doc使用Doxygen生成的帮助文档
lexers 已实现的各语法分析器

 

2.安装过程

   2.1 本地环境

Qscitinlla的版本为:2.11.2

构建套件:Desktop Qt 5.13.0 MinGW 64-bit

部署:Deploy Configuration

   2.2安装Qscitinlla

在这之前将你的qmake和mingw32-make路径添加进你的系统变量环境中,比如我的电脑上添加的路径为:   
 

E:\Qt\Qt5.13.0\5.13.0\mingw73_64\bin

E:\Qt\Qt5.13.0\Tools\mingw730_64\bin

   使用win+r 使用cmd进入命令窗口   

   cd 进入 ..\QScintilla_gpl-2.11.2\Qt4Qt5下

qmake qscintilla.pro #使用qmake工具生成makefile文件
mingw32-make         #使用Qt MinGW版本自带的make工具按照makefile里面的定义的方式编译qscintilla的源文件
mingw32-make install #将编译生成的库整合到自己的Qt源文件中

然后我发现使用QtCreator打开qscintilla.pro,构建项目,编译后无法生成qscintilla2.lib或者qscintilla2.a文件,只生成了生成qscintilla2_qt5.lib或.a文件文件。(有大神可以帮我解惑一下么)。

然后我发现了这套语句需要放在项目文件.pro:

INCLUDEPATH += $$PWD/Qsci
LIBS += -L$$PWD -lqscintilla2_qt5

LIBS += -L$$PWD -lqscintilla2_qt5   这句话是找到目标动态库。

先将解压目录下的Qt4Qt5中的Qsci目录拷贝到新创建的工程目录下。将qscintilla2.lib也放到项目文件下。

3.创建工程

  3.1添加头文件

在头文件中间添加下面内容。

//QsciScintilla作为QWidget的控件,需要添加该控件的头文件
#include <Qsci/qsciscintilla.h>
//以python语法作为例子,该语法分析器的头文件
#include <Qsci/qscilexerpython.h>
//设置代码提示功能,依靠QsciAPIs类实现
#include <Qsci/qsciapis.h>

3.2配置功能

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->setAutoCompletionSource(QsciScintilla::AcsAll);//设置源,自动补全所有地方出现的
    editor->setAutoCompletionCaseSensitivity(true);   //设置自动补全大小写敏感
    editor->setAutoCompletionThreshold(1);    //设置每输入一个字符就会出现自动补全的提示
 
    QVBoxLayout *pLayout = new QVBoxLayout(this);
    pLayout->addWidget(editor);
    pLayout->setContentsMargins(0,0,0,0);
}

这里需要注意,应该还要添加

#include <QVBoxLayout>

在当前文件的头文件下面。设置布局信息。

创建工程后 点击运行即可完成显示效果。

4.运行效果

 

疑问:

我的程序只能在Release下运行,并能使用Debug模式运行,请求各位大佬解惑。运行错误提示是
 

14:22:45: Starting G:\QT\build-MY_NEWcode-Desktop_Qt_5_13_0_MinGW_64_bit-Debug\debug\MY_NEWcode.exe ...
QWidget: Must construct a QApplication before a QWidget
14:22:53: 程序异常结束。
14:22:53: The process was ended forcefully.
14:22:53: G:/QT/build-MY_NEWcode-Desktop_Qt_5_13_0_MinGW_64_bit-Debug/debug/MY_NEWcode.exe crashed.

可以通过编译与链接,但是无法正常运行。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值