大家好,我又回來了~~
之前和大家分享的是在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,現在就不會有錯誤了,全力運行!!叮咚~~
成功結果如下!
一個簡易的文本編輯器就誕生了~ 耶!!!
如果大家覺得還闊以,歡迎大家關注公眾號。

微信掃一掃
關注該公眾號