qt creator原始碼全方面分析 2 10 5

2022-07-25 15:51:29 字數 1682 閱讀 8887

目錄通常,外掛程式不需要直接訪問外掛程式管理器。 互動主要間接的通過extensionsystem::iplugin介面。 在某些情況下,則必須使用外掛程式管理器api。 外掛程式需要訪問外掛程式管理器的物件池,以擴充套件qt creator的某些方面,例如將頁面新增到選項對話方塊。 他們還可以利用物件池為其他外掛程式提供擴充套件點。

外掛程式管理器處理所有細節,包括查詢外掛程式,讀取它們的描述檔案,解決外掛程式依賴性,以正確的順序載入和初始化所有外掛程式,以及傳遞命令列引數給外掛程式。

另外,外掛程式管理器管理物件池,可以根據不同的條件在其中註冊和檢索物件。

外掛程式與外掛程式管理器的大多數互動應通過extensionsystem::iplugin介面完成,但是下表總結了一些對外掛程式有用的函式和訊號。 有關完整列表,請參見extensionsystem::pluginmanager參考文件。

函式描述

instance()

返回外掛程式管理器單例,例如,用於連線訊號。

addobject()

在物件池中註冊物件。 也可以通過extensionsystem::iplugin::addobject()。

removeobject()

從物件池中移除物件。 也可以通過extensionsystem::iplugin::removeobject()。

allobjects()

返回物件池中註冊的所有物件的未過濾列表。

getobject()

返回註冊在物件池中的型別為t的物件。 這在向aggregation致敬。

getobjectbyname(const qstring &name)

返回在物件池中註冊的具有給定物件名稱的物件。

訊號描述

objectadded(qobject *object)

在物件被註冊到物件池之後傳送。

abouttoremoveobject(qobject *object)

在物件從物件池中移除之前傳送。

initializationdone()

在外掛程式執行,且所有延遲的初始化完成時傳送。

外掛程式可以將物件註冊到由外掛程式管理器管理的公共池中。池中的物件必須派生自qobject,無需其他先決條件。

所有指定型別的物件,可以通過getobject()函式從物件池中檢索。函式感知aggregation::aggregate,並使用aggregation::query()函式,而不是qobject_cast來判斷匹配物件。

可以通過allobjects()函式,檢索在物件池中註冊的所有物件的未過濾列表。

也可以使用getobjectbyname(),檢索具有特定物件名稱的物件(參見qobject::objectname())。

每當物件池的狀態更改時,外掛程式管理器都會發出相應的objectadded()abouttoremoveobject()訊號。

物件池的乙個常見用例是,乙個外掛程式(或應用程式)為其他外掛程式提供了擴充套件點,擴充套件點為類,在其他外掛程式中實現,並新增到物件池中,然後供提供擴充套件點的外掛程式檢索。也可以使用物件池來提供對物件的訪問,而無需實際鏈結到提供的外掛程式庫。

原創造福大家,共享改變世界

獻出一片愛心,溫暖作者心靈

qt creator原始碼全方面分析 2 0

目錄 支援其他檔案型別 執行外部工具 所有主題 qt creator是為qt開發人員的需求量身定製的跨平台整合開發環境 ide qt creator可以通過多種方式擴充套件。例如,qt creator架構基於外掛程式載入器,這意味著外掛程式載入器以外的所有功能都在外掛程式中實現。但是,您可以擴充套件...

qt creator原始碼全方面分析 2 6

目錄 編寫訊息 ui文字大寫 使用句子樣式大寫 準備本地化 qt creator通用條款 請遵循本節中的準則,以確保擴充套件與qt creator ui保持一致,並且可以輕鬆地將其本地化為其他語言。編寫ui文字時,請確保它 使用者介面文字應簡潔明瞭且經濟實惠。避免使用不必要的內容詞和短語。但是,更重...

qt creator原始碼全方面分析 4 2

目錄外掛程式的本質就是動態鏈結庫,對於庫,需要匯出符號,供使用者匯入使用。在qt creator的原始碼中,存在固定的匯入匯出模式。對於每個庫和外掛程式,都有乙個xx global.h標頭檔案,其中xx為庫或外掛程式名。示例如下 pragma once include if defined xx l...