魔改 Qt Creator 插件框架(附源碼)

2022-01-05 高效程式設計師

收錄於話題 #Qt 48個

星標/置頂 公眾號👇,硬核文章第一時間送達!

幾年前,我曾寫過一些插件相關的文章,其中最成體系的當屬 CTK 系列,一共 18 個章節,從 0 到 1 講述了模塊化編程在 C++/Qt 中的實際應用。

很多小夥伴曾學過這個框架/庫,但真正用起來的沒有幾個,究其原因有如下幾個:

一句話:很難學!的確是這樣,因為我也經歷過這個過程,所有的這些經驗積累,都是我之前從 OSGI 那裡一步步摸索,總結而來的!

所以如果要學會它,需要花費不少精力,當然了,同時你的內功也會大大提升!想想看,如果大家都學會了,怎麼體現你的優秀!

話不多說,無論是想研究 CTK 還是其他插件框架,建議先從 Qt Plugin 開始,然後是 QTC 的 ExtensionSystem(官方術語,你也可以認為是插件系統),下面就來扒一扒這個 ExtensionSystem 的源碼。

QTC 源碼

如果要推薦 Qt 項目,我一定首選 QTC:https://github.com/qt-creator/qt-creator,Qt 官方開發的 IDE、良好的組織結構、優秀的代碼設計、以及編碼風格,我想沒有比這個更值得深入研究的了!

雖然 QTC 中的代碼很多,但要剝離插件框架其實也不難。進入 QTC 源碼,找到 ExtensionSystem 就可以了,它是一個庫,自身又依賴於 utils 庫。所以如果想在自己的項目中使用 QTC 的插件框架,必須得同時把這兩個都扒下來!

utils 裡面是一些算法、性能診斷相關的功能,如果不想要它,只想要 ExtensionSystem,可以把這部分裁減掉,再魔改一下!

編寫 QES

為了介紹和使用 ExtensionSystem,我編寫了一個簡單的程序,名為 QES(Qt ExtensionSystem 的縮寫)。

這裡面有插件的整體加載流程,以及兩個測試插件 - coreplugin 和 helloworld。通過這個示例程序,你可以很容易地將 ExtensionSystem 移植到自己的項目中,並且能夠快速地編寫自己的插件。

如果對 QES 感興趣,想學習源碼,請訪問我的 github:https://github.com/Waleon/QES,不要忘了給個 Star 哦!


關注公眾「高效程式設計師」👇,一起優秀!

回復 「入群」 進技術交流群,回復 「1024」 獲取海量學習資源。

一個字:肝

相關焦點

  • Qt Creator 5.0 RC 發布
    收錄於話題 #qt修正了帶有默認值的函數的重新格式化;修正了同名但不同命名空間的類型的錯誤警告;美化器修正了clang-format和多字節字符的問題;項目增加了對 Docker 設備上構建和運行的實驗性支持;修正了
  • Windows 下 Qt creator安裝和使用
    creator  QT裡面有一個概念非常重要,主要是構建套件。二.整體搭建qtcreator開發環境  (1)官方下載:http://download.qt.io/official_releases   Qt creator 屬於整個QT資源的一部分,我們在裡面選擇下載
  • Qt之Qt Creator安裝大全
    Qt Creator是Qt Company開發的跨平臺C++圖形用戶界面應用程式開發框架
  • qt creator連接資料庫並實現用戶登錄和註冊相關的開發源碼詳解
    項目最終實現效果圖具體代碼詳解1 如何給qt界面設置相關的圖片呢?首先我們新建一個基於對話框的程序,名字自己定義即可。其次我們需要將自己的背景圖做好,保存為png或者img或者jpg等相關的格式,然後右鍵點擊creator,選擇添加現有文件,將圖片添加到creator界面如上圖所示。這樣的話,我們的基本文件已經存在了,接下來就是需要調用代碼進行相關的圖像的關聯了。
  • Qt值得學習嗎?詳解Qt的幾種開發方式
    qt值得學習嗎?嵌入式要學的東西真的很多,我們可能會說不寫界面的話就不用學qt了?我不贊同。Qt的實現主要是採用p-impl手法,實現接口與實現分離,它有很好的消息循環機制,有的對象與線程的相關性,它也有藉助moc生成反射元信息,這種設計方法至今仍然非常適用。qt內核部分其實是完全和界面無關的,你完全可以拋開Qt GUI部分來學習和使用Qt。
  • Qt Creator 源碼學習 04:qtcreator.pri
    綜上所述,qtLibraryTargetName函數實現了這樣一種功能:當使用 debug 環境編譯時,在 mac 下生成的庫名稱將被重命名追加_debug,win 下則追加d。qtLibraryName替換函數與此類似。首先,它會獲得qtLibraryTargetName的返回值。如果 win32 環境下,使用split將前面定義的QTCREATOR_VERSION以.為分隔符分成列表,然後使用$$RET$$first(VERSION_LIST)語句,將RET與VERSION_LIST的第一個元素,也就是 major 值,拼接後返回。
  • Qt Designer、Qt Quick Designer、Qt Creator有什麼區別?
    不管是Qt新手還是開發過
  • Cocos Creator 3D 插件教程(一):看你骨骼驚奇,我帶你上車!
    設置插件基本信息我們在package.json裡面定義一些插件信息。比如插件名字、版本號、作者、描述等:{  "name": "hello-world",  "version": "1.0.0",  "author": "xu_yanfeng",  "description": "creator3d插件 hello-world"}3.在編輯器中查看插件讓我們回到 Creator
  • 【Qt】Qt下載教程
    目錄說明vsaddin這是 Qt 針對 Visual Studio 集成的插件,本教程基本不使用 Visual Studio ,所以不需要插件。qt這是 Qt 開發環境的下載目錄,我們剛說的 Qt 5 的大安裝包就在這裡面。online_installers在線安裝器,國內用戶不建議使用,在線安裝是龜速,還經常斷線。我們教程採用的全部是離線的大安裝包。
  • VS2015+Qt5.9編程環境配置及常見問題解決方法
    4、安裝Qt5.9本文使用的Qt版本是5.9.7,下載對應的版本,其文件名為「qt-opensource-windows-x86-5.9.7.exe」。5、VS2015中配置Qt環境在上個步驟中安裝完Qt後並不能直接在VS2015中使用Qt,需要安裝Qt的插件。
  • CocosCreatorv1.7正式版本發布!
    >JSB 2.0 原生平臺性能提升支持平臺原生 JS 引擎,減小 iOS 包體 5M性能大大提升,iOS 平臺 JS 執行提升 5 倍分代垃圾回收(Generational GC),避免卡頓支持所有原生平臺調試,使用上更加高效完全抽象的綁定層 API,方便 JS 引擎升級更加便捷無感知首先,Cocos Creator 原生平臺的基礎架構和 Cocos2d-x 一脈相承,框架上是沒變化的
  • 免安裝xposed 也能用xposed框架及插件
    大家都知道,用xposed框架必須要root,但現在root成功率越來越低,大大提高了使用門檻。看似無解的問題,其實可以通過沙箱技術解決。市面上典型利用沙箱技術的應用是雙開類應用,今天介紹的這塊應用,不僅穩定支持雙能開,更支持運行xposed框架+插件,真正做到免root,甚至不用安裝xposed框架,就能玩轉各種插件了。可謂是廣大機友的福音。
  • Grid.js - 跨框架的前端表格插件
    只想簡簡單單畫個表格,但 React,Vue,Angular,…,這麼多前端框架
  • 免root,免刷機,甚至免安裝 xposed 框架,也能用 xposed 框架及插件...
    大家都知道,用 xposed 框架必須要 root,但現在 root 成功率越來越低,大大提高了使用門檻。看似無解的問題,其實可以通過沙箱技術解決。  市面上典型利用沙箱技術的應用是雙開類應用,今天介紹的這塊應用,不僅穩定支持雙能開,更支持運行 xposed 框架+插件,真正做到免 root,甚至不用安裝 xposed 框架,就能玩轉各種插件了。
  • 使用Qt框架實現基於QPainter類的自定義場景圖
    演示如何使用Qt框架實現基於 QPainter的自定義場景圖項。"繪製項"示例演示如何使用 QML 場景圖框架使用QPainter 實現自定義場景圖項。QQuickPaintedItem類是從QQuickItem 派生的類,用於使用 QPainter 接口實現自定義 QML 場景圖形項。
  • Qt Creator 初步使用
    Qt Creator 是一個跨平臺的集成開發環境 (IDE),為使用 Qt 應用程式框架設計和開發應用程式提供工具。Qt 專為開發應用程式和用戶界面而設計,並將其部署到多個桌面,嵌入式和行動作業系統。 Qt Creator 為您提供了在整個應用程式開發生命周期(從創建項目到將應用程式部署到目標平臺)中完成任務的工具。
  • AE常用插件分享
    好久沒給大家分享東西啦~今天就給你們分享幾個我最常用的插件吧~免得老是有小夥伴私信我,老師,找不到插件怎麼辦?安裝連結失效的話歡迎大家私信我~另外,偷偷告訴你們插件貴精不貴多,大家還是先好好提升自己的技術吧!
  • 10個實用的CSS和JavaScript動畫插件/框架/庫
    10個實用的CSS和JavaScript動畫插件/框架/庫 站長之家(CHINAZ.com)12月1日編譯:在網站中嵌入動畫已經成為今年的設計趨勢之一
  • Qt Creator 5.0 發布
    在 Help > About Plugins(或 Qt Creator > About Plugins on macOS)中啟用實驗性插件後,您可以在 Device 設置中創建一個 Docker 設備,並將其設置為 Kit 中的「Build device」和「Device」。C++ 代碼模型收到了各種修復。
  • 魔獸世界懷舊服任務增強插件推薦 懷舊服插件整合包
    魔獸世界懷舊服任務增強插件推薦,懷舊服插件整合包。由於懷舊服上線時間還是比較端的,各大常用插件整合包都沒有一個比較完善的。但是沒關係,還是有不少專心於插件的大神給各位自己整理了不錯的插件整合包。