QScintilla下載與編譯
你好,我是大賀!?Pou光明?今天
大家好,我又回來(lái)了~~
之前和大家分享的是在c/c++中通過(guò)python c api嵌入python解釋器,主體都是和python相關(guān)的。其實(shí)最終要和大家分享的是如何做一個(gè)python編輯器。比如支持語(yǔ)法高亮、關(guān)鍵字自動(dòng)補(bǔ)全,顯示行號(hào)等功能。所以這次和大家一起學(xué)習(xí)的是一個(gè)Qt下的源代碼編輯器控件。相信有的同志已經(jīng)猜出來(lái)了。對(duì),就是它。
Scintilla是以C++編寫的自由開(kāi)源程序庫(kù),它提供文本編輯器程序的各種功能,特別是適用于源代碼編輯器的高級(jí)功能。
而QScintilla則是Scintilla?在Qt上的移植。QScintilla是Scintilla編輯組件Qt的一個(gè)端口。?除了標(biāo)準(zhǔn)文本編輯組件中的功能外,QScintilla還包含在編輯和調(diào)試源代碼時(shí)特別有用的功能。這些包括對(duì)語(yǔ)法樣式,錯(cuò)誤指示器,代碼完成和調(diào)用提示的支持。選擇邊距可以包含調(diào)試器中用于指示斷點(diǎn)和當(dāng)前行的標(biāo)記。樣式選擇比許多編輯器更開(kāi)放,允許使用比例字體,粗體和斜體,多種前景色和背景色以及多種字體。
先貼一個(gè)源碼包下載地址:
https://riverbankcomputing.com/software/qscintilla/download
我的平臺(tái)是ubuntu 14.04,Qt5.
下面是下載解壓好的文件夾列表:
紅色數(shù)字1是移植后的Qt源碼工程,編譯通過(guò)后會(huì)生成對(duì)應(yīng)的連接庫(kù)。
紅色數(shù)字2是在Qt下的一個(gè)編輯器的小Demo,之后會(huì)以example-Qt4Qt5為例演示。
第一部分:編譯源碼生成共享庫(kù)
接下來(lái)用Qt Creator 打開(kāi)1,生成ubuntu下的共享庫(kù)??赡苁俏姨摂M機(jī)不大行,編譯了將近5分鐘~ ~ ~打開(kāi)后可以簡(jiǎn)單看看,那么多源文件,辛苦作者了,向他們致敬!致敬這種開(kāi)源精神!由于目標(biāo)文件是生成共享庫(kù),所以編譯完成后Qt Creator?會(huì)彈出下面的彈窗:
沒(méi)有可執(zhí)行程序,直接點(diǎn)Cancel按鈕取消即可。Qt編譯后的文件夾下有很多中間文件以及其他文件,對(duì)于我們來(lái)講,有用的則是圖中生成的共享庫(kù)。接下來(lái)是example-Qt4Qt5的跑通。
第二部分:鏈接共享庫(kù),運(yùn)行例子
有了共享庫(kù)后,我們鏈接動(dòng)態(tài)庫(kù),運(yùn)行例子。我的是Qt5?的版本,無(wú)法直接運(yùn)行,需要做些改動(dòng)。
①鏈接共享庫(kù)庫(kù)
需要包含庫(kù)的頭文件,鏈接共享庫(kù)。
鏈接共享庫(kù)是數(shù)字3部分的代碼。Lib文件夾的目錄如下圖。

②修改.pro編譯工程
由于Qt5對(duì)Qt4的不兼容,需要添加以下語(yǔ)句。
greaterThan(QT_MAJOR_VERSION,4):QT+=widgets
當(dāng)程序中需要添加widgets模塊,
這行代碼的意思是,如果QT主版本大于4(也就是說(shuō)當(dāng)前使用的是Qt5或者更高版本),則需要添加widgets模塊。
也可以直接用“QT+=widgets”,但這樣可以保持與QT4的兼容性
由于代碼中使用了c++11標(biāo)準(zhǔn),我們需要在在工程中配置C++11。
否則會(huì)報(bào)以下的錯(cuò)誤!這是?C++11中的新語(yǔ)法!
O的K,現(xiàn)在就不會(huì)有錯(cuò)誤了,全力運(yùn)行??!叮咚~~
成功結(jié)果如下!
一個(gè)簡(jiǎn)易的文本編輯器就誕生了~?耶!??!
如果大家覺(jué)得還闊以,歡迎大家關(guān)注公眾號(hào)。
微信掃一掃
關(guān)注該公眾號(hào)