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

2021-12-10 高效程式設計師

收錄於話題 #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+OpenCV插件開發示例
    最近用Qt結合OpenCV 進行計算機視覺的開發,在C++開發中,界面設計是比較費力的一項工作,還好Qt提供了一整套GUI的框架和庫。
  • 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推出Clazy框架幫助項目從Qt 5移植到Qt 6
    近日,Qt 推出了 Clazy 框架,專門用於幫助項目從 Qt 5 移植到 Qt 6。該框架包含一些檢查,這些檢查可以使用 Clazy 作為編譯器插件運行,也可以在 .json 文件上使用 Clazy standalone 或從 Qt Creator 內部運行。下面是專用於 Qt 6 移植的 Clazy 檢查列表:qt6-deprecated-api-fixes。
  • Qt之Qt Creator安裝大全
    Qt Creator是Qt Company開發的跨平臺C++圖形用戶界面應用程式開發框架
  • Qt值得學習嗎?詳解Qt的幾種開發方式
    qt值得學習嗎?嵌入式要學的東西真的很多,我們可能會說不寫界面的話就不用學qt了?我不贊同。Qt的實現主要是採用p-impl手法,實現接口與實現分離,它有很好的消息循環機制,有的對象與線程的相關性,它也有藉助moc生成反射元信息,這種設計方法至今仍然非常適用。qt內核部分其實是完全和界面無關的,你完全可以拋開Qt GUI部分來學習和使用Qt。
  • Qt Creator 源碼學習 03:qtcreator.pro
    BASENAME = $(INSTALL_BASENAME)isEmpty(BASENAME): BASENAME = qt-creator= "$(INSTALL_ROOT)$QTC_PREFIX" BINDIST_INSTALLER_SOURCE = "$BINDIST_SOURCE/*" deployqt.commands = python -u $PWD/scripts/deployqt.py -i \"$(INSTALL_ROOT)$QTC_PREFIX\" \"$(QMAKE)\" deployqt.depends
  • 5款強大的密碼顯示/隱藏效果推薦(附源碼下載)
    Bootstrap實現用戶輸入密碼顯示隱藏代碼Bootstrap是基於HTML、CSS、JavaScript 開發的簡潔、直觀、強悍的前端開發框架jQuery是一個快速、簡潔的JavaScript框架,這是用jQuery實現隱藏顯示密碼效果的插件,點擊「小眼睛」圖標或勾選「 Show password」即可顯示或隱藏密碼。
  • CocosCreator3D插件教程(1):hello-world
    本篇文章手把手帶你,跟著我3步搞定,不需要編寫一行代碼,2分鐘輕鬆入門creator3d插件。1. 創建插件項目我們需要先下載Cocos Dashboard,然後在Dashboard中下載creator3d,這裡我使用的是v1.2.0:新建並打開一個creator3d空項目,然後找到項目的packages目錄,如下圖所示新建對應的文件和目錄:
  • 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 值,拼接後返回。
  • CocosCreator3D插件教程:重新認識package.json
    本教程同樣不會遵照插件文檔的順序進行講解,完全是個人角度,對新插件體系的一個從零入門理解,所以,要想深究,你還得回頭重新仔細閱讀插件文檔。和creator2d插件一樣,新插件同樣有一份package.json文件,裡面描述了插件的很多重要信息:{  "name": "hello-plugin",  "version": "1.0.0",  "author": "xu_yanfeng",  "main": ".
  • Qt官方示例-樣式插件
    ❝這個例子展示了如何創建一個以新的GUI外觀擴展Qt的插件。❞  Qt中的插件是存儲在共享庫中的類,可以在運行時由QPluginLoader加載。在Qt中創建插件時,它們要麼擴展Qt應用程式,要麼擴展Qt本身。編寫可擴展Qt本身的插件是通過繼承插件基類之一,從該類重新實現功能並添加宏來實現的。
  • Qt入門之基礎篇 ( 一 ) :Qt5下載與安裝
    Qt是一個跨平臺的C++圖形界面應用程式框架。
  • XPOSED魔改一:獲取特徵
    目錄寫在前面準備環境:選擇XPOSED版本v89準備環境:選擇谷歌原版鏡像7.1.2準備環境:使用SuperSU進行root準備環境:安裝Xposed框架並激活插件收集特徵:底包詳細信息收集特徵:日誌輸出信息收集特徵:插件開發配置信息收集特徵:XposedChecker源碼收集特徵:逆向分析大廠方案受這篇文章——《定製Xposed框架》(https://bbs.pediy.com/thread-255836.htm)啟發,決定自己也嘗試一下。
  • 【教程】安卓手機安裝魔改教程(完美版)
    教程包含:一、安裝魔改包前提條件(root,針對官服國服,渠道服可以無需root並使用第三部分內容)二、手機端替換安裝包文件
  • SVN視頻教程(附源碼)打包下載
    SVN視頻教程(附源碼)打包下載:
  • 新編輯器Cocos Creator發布:對不起我來晚了!
    你可以從cocos.com/docs/creator獲取產品的用戶手冊,而更簡單的方式是直接從Creator的菜單裡面點「文檔」打開用戶手冊的離線版,離線版,離線版哦!雖然我們在Studio裡推出了自定義控制項的擴展功能,但實際上由於引擎修改用C++,遊戲邏輯編碼用C++ / Lua / JavaScript三選一,編輯器擴展用C#或Lua,一般團隊需要掌握三門程式語言才能完成Studio的擴展插件。所以實際使用中極少團隊可以能夠輕鬆 Studio做擴展插件。
  • Creator插件系統初探:我是怎麼實現gif轉anim動畫的
    這裡首先感謝一些插件小王子,寫這個插件的過程中,小王子解惑了很多問題。
  • Cocos Creator 開源遊戲、插件、教程、視頻匯總
    http://forum.cocos.com/t/creator/44782開源遊戲 17 個,包含單機和網絡,還有質量很高的成品遊戲開源的 Creator 擴展插件 10 個,包含 TypeScript
  • Qt Visual Studio Tools 添加對開發 Linux 項目的支持
    Qt Visual Studio Tools 是 Qt 為 Visual Studio 開發的一個插件,其將 Qt 開發工具集成到 VS 中,方便開發者輕鬆使用 Qt 框架。根據 Qt 發布的公告,計劃於今年夏天發布的 Qt Visual Studio Tools 插件將添加對開發 Linux 項目的支持。