你好,我是大贺! Pou光明 

大家好,我又回来了~~

之前和大家分享的是在c/c++中通过python c api嵌入python解释器,主体都是和python相关的。其实最终要和大家分享的是如何做一个python编辑器。比如支持语法高亮、关键字自动补全,显示行号等功能。所以这次和大家一起学习的是一个Qt下的源代码编辑器控件。相信有的同志已经猜出来了。对,就是它。

Scintilla是以C++编写的自由开源程序库,它提供文本编辑器程序的各种功能,特别是适用于源代码编辑器的高级功能。

而QScintilla则是Scintilla 在Qt上的移植。QScintilla是Scintilla编辑组件Qt的一个端口。 除了标准文本编辑组件中的功能外,QScintilla还包含在编辑和调试源代码时特别有用的功能。 这些包括对语法样式,错误指示器,代码完成和调用提示的支持。 选择边距可以包含调试器中用于指示断点和当前行的标记。 样式选择比许多编辑器更开放,允许使用比例字体,粗体和斜体,多种前景色和背景色以及多种字体。

先贴一个源码包下载地址:

https://riverbankcomputing.com/software/qscintilla/download

我的平台是ubuntu 14.04,Qt5.

下面是下载解压好的文件夹列表:

红色数字1是移植后的Qt源码工程,编译通过后会生成对应的连接库。

红色数字2是在Qt下的一个编辑器的小Demo,之后会以example-Qt4Qt5为例演示。

第一部分:编译源码生成共享库

接下来用Qt Creator 打开1,生成ubuntu下的共享库。可能是我虚拟机不大行,编译了将近5分钟~ ~ ~打开后可以简单看看,那么多源文件,辛苦作者了,向他们致敬!致敬这种开源精神!由于目标文件是生成共享库,所以编译完成后Qt Creator 会弹出下面的弹窗:

没有可执行程序,直接点Cancel按钮取消即可。Qt编译后的文件夹下有很多中间文件以及其他文件,对于我们来讲,有用的则是图中生成的共享库。接下来是example-Qt4Qt5的跑通。

第二部分:链接共享库,运行例子

有了共享库后,我们链接动态库,运行例子。我的是Qt5 的版本,无法直接运行,需要做些改动。

①链接共享库库

需要包含库的头文件,链接共享库。

链接共享库是数字3部分的代码。Lib文件夹的目录如下图。

②修改.pro编译工程

由于Qt5对Qt4的不兼容,需要添加以下语句。

greaterThan(QT_MAJOR_VERSION,4):QT+=widgets

当程序中需要添加widgets模块,

这行代码的意思是,如果QT主版本大于4(也就是说当前使用的是Qt5或者更高版本),则需要添加widgets模块。

也可以直接用“QT+=widgets”,但这样可以保持与QT4的兼容性

由于代码中使用了c++11标准,我们需要在在工程中配置C++11。

否则会报以下的错误!这是 C++11中的新语法!

O的K,现在就不会有错误了,全力运行!!叮咚~~

成功结果如下!

一个简易的文本编辑器就诞生了~ 耶!!!

如果大家觉得还阔以,欢迎大家关注公众号。

 
 

微信扫一扫
关注该公众号

QScintilla下载与编译的更多相关文章

  1. Chrome代码下载及编译

    2-3年前在做客户端开发时,看过CHROME的一部分代码,主要是BASE库相关的.其项目之大,编译时间之长给我留下了深刻的印象. 3年后的最近,想着再读一下其他部分的代码,所以就对其纠结的下载和编译过 ...

  2. Android学习系列(38)--Android源码下载和编译

    前面多篇文章介绍到如何下载和编译Android或者CM源码,不过一直都是放在<拓展系列>里.随着学习的深入,android源码是非常有参考和学习价值,强烈推荐大家都去下载,编译,学习,所以 ...

  3. 深入浅出-Android系统移植与平台开发(一)- Android4.0系统的下载与编译

    作者:唐老师,华清远见嵌入式学院讲师. 一.Android4.0系统的下载与编译 Android系统的下载与编译,Google的官方网站上已经给出了详细的说明,请参照Android的官方网址: htt ...

  4. Ubuntu10.04下载并编译Android4.3源代码

    注:转载或引用请标明出处    http://blog.csdn.net/luzhenrong45/article/details/9719433 去年用Ubuntu10.10成功下载并编译Andro ...

  5. 【转】Android 4.3源码的下载和编译环境的安装及编译

    原文网址:http://jingyan.baidu.com/article/c85b7a641200e0003bac95a3.html  告诉windows用户一个不好的消息,windows环境下没法 ...

  6. 【转】在Ubuntu上下载、编译和安装Android最新源代码

    原文网址:http://blog.csdn.net/luoshengyang/article/details/6559955 看完了前面说的几本书之后,对Linux Kernel和Android有一定 ...

  7. Mac下载并编译Google安卓AOSP项目代码

    Mac下载并编译Google安卓AOSP项目代码 参考 https://source.android.com/source/index.html 这两天用Mac下载安卓AOSP源码,且把遇到的问题记下 ...

  8. 在Ubuntu上下载、编译和安装Android最新源码

    看完了前面说的几本书之后,对Linux Kernel和Android有一定的认识了,是不是心里蠢蠢欲动,想小试牛刀自己编译一把Android源码了呢?一直习惯使用Windows系统,而Android源 ...

  9. 在Ubuntu上下载、编译和安装Android最新内核源代码(Linux Kernel)

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6564592 在前一篇文章提到,从源代码树下载下 ...

随机推荐

  1. Scala 学习之路(十)—— 函数 & 闭包 & 柯里化

    一.函数 1.1 函数与方法 Scala中函数与方法的区别非常小,如果函数作为某个对象的成员,这样的函数被称为方法,否则就是一个正常的函数. // 定义方法 def multi1(x:Int) = { ...

  2. ASP.NET Core Web API中使用Swagger

    本节导航 Swagger介绍 在ASP.NET CORE 中的使用swagger   在软件开发中,管理和测试API是一件重要而富有挑战性的工作.在我之前的文章<研发团队,请管好你的API文档& ...

  3. Android之LinearLayout布局下怎么让按钮固定在底部

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  4. CentOS 7出现Failed to start firewalld.service: Unit is masked的解决办法和firewalld 防火墙开关

    说明:刚刚使用systemctl start firewalld命令开启防火墙的时候,却开不成功,出现Failed to start firewalld.service: Unit is masked ...

  5. Python笔记【4】_字典学习

    #!/usr/bin/env/python #-*-coding:utf-8-*- #Author:LingChongShi #查看源码Ctrl+左键 ''' dict:字典以“{}”包围,以“键:值 ...

  6. 风险:隐蔽权限修改导致rgw服务中断

    上午正在开会,突然收到rgw服务异常的告警(503 Service Unavailable),立马停下来处理告警,避免影响到用户~   我们的rgw frontend用的是apache,之前也遇到过5 ...

  7. 我是这样理解--SVM,不需要繁杂公式的那种!(附代码)

    1. 讲讲SVM 1.1 一个关于SVM的童话故事 支持向量机(Support Vector Machine,SVM)是众多监督学习方法中十分出色的一种,几乎所有讲述经典机器学习方法的教材都会介绍.关 ...

  8. SpringMVC——MVC

    一.了解MVC mvc这种设计模式,分为三个基本部分:模型(Model).视图(View)和控制器(Controller),不光运用于Web领域,而且也能用于非Web领域:可以特指一种表现层设计模式, ...

  9. Markdown下,上传图片问题

    最简单的方法: 1,登录qq 2,登录博客园,并打开博客园添加随笔的地方:如图: 3,选择需要截屏的地方,按住ctrl+alt+A截屏,然后在qq的发送栏内贴过去 4,鼠标左键按住不松开,然后拖到这里 ...

  10. [NOIP2013]华容道 题解(搜索)

    [NOIP2013]华容道 [题目描述] 这道题根据小时候玩华容道不靠谱的经验还以为是并查集,果断扑街.考后想想也是,数据这么小一定有他的道理. 首先由于是最小步数,所以BFS没跑了.那么我们大可把这 ...