CTK外掛程式框架學習6 註冊介面呼叫

2021-10-02 04:42:07 字數 2139 閱讀 9912

ctkservicereference csref = pcontex->getservicereference();

ctkeventadmin *eventadmin = pcontex->getservice(csref);

ctkdictionary cdiry;

cdiry.insert("plug_info", qstring("[%1]%2").arg(qtime::currenttime().tostring("mm:ss.zzz")).arg(recvstr));

ctkevent event("testsop/hotplug", cdiry);

eventadmin->postevent(event);

本篇部落格將寫乙個新的外掛程式,也用註冊介面的方式對外提供自定義的介面。該外掛程式功能是掃瞄linux系統下/sys/目錄裡的usb裝置路徑資訊。

介面類在ctk外掛程式框架中被描述為service,裡面會定義一些介面。外掛程式通過該類來註冊服務,外部程式通過該類獲取外掛程式服務,從而呼叫外掛程式的註冊介面。這裡定義乙個簡單的iusbscaner類,裡面定義兩個虛函式scanusbtree()和printusbtree(),這兩個虛函式就是接下來要寫的外掛程式對外暴漏的介面。

#ifndef iusbscaner_h

#define iusbscaner_h

#include #define usb_root_path "/sys/bus/usb/devices"

class iusbscaner

;q_declare_inte***ce(iusbscaner, "inte***ce_usbscaner")

#endif // iusbscaner_h

iusbscaner類是介面類,它的具體實現放到子類中進行。這裡定義乙個子類usbscaner,繼承於iusbscaner。在usbscaner類中定義具體的實現函式。

#ifndef usbscaner_h

#define usbscaner_h

#include #include "iusbscaner.h"

class usbscaner : public qobject, public iusbscaner

;#endif // usbscaner_h

usbscaner::usbscaner()

/** * @brief usbscaner::scanusbtree 掃瞄usb裝置樹

*/void usbscaner::scanusbtree()

;#endif // qpluginactivator_h

#include "qpluginactivator.h"

#include "usbscaner.h"

#include "ctkdictionary.h"

#include "iusbscaner.h"

qpluginactivator::qpluginactivator()

void qpluginactivator::start(ctkplugincontext *context)

void qpluginactivator::stop(ctkplugincontext *)

與註冊服務對應,外部程式首先通過介面類獲取介面類的例項化物件,也就是獲取了外掛程式服務,然後再呼叫外掛程式的自定義介面。如下面程式所示,首先載入與啟動外掛程式的程式與普通外掛程式完全一樣,在啟動外掛程式後,通過外掛程式context來獲取usbscaner外掛程式服務,並呼叫該外掛程式的註冊介面scanusbtree()和printusbtree()。

// 啟動外掛程式

qstringlist pluginlists = ;

foreach (qstring pluginname, pluginlists) catch (const ctkpluginexception &e)

}// 呼叫外掛程式服務

iusbscaner *usbscaner;

ctkservicereference cserviceref = plugincontext->getservicereference();

if(cserviceref)

}

ctk框架搭建 一 ctk框架外掛程式載入與專案結構

使用ctk框架開發有大半年了,就實際應用上來說框架還比較可靠,但網上資料很少。而剛接觸時專案已經有了相當大的體量,與業務等其他邏輯混淆,現在單獨把ctk框架部分抽離出來做個總結分享,避免後來的人走彎路。該系列介紹簡單的ctk框架構建的方法,具體架構可根據自身專案設計,開發環境為macos high ...

ctk框架搭建 二 ctk外掛程式的介面處理及啟用

ctk框架由乙個乙個可分離的外掛程式組成,框架對外掛程式識別有一定要求,目前網上很多一整塊扔出來對新人不太友好,博主這裡講解是盡量拆。單個外掛程式最基本的格式要求分成activator,qrc檔案,以及manifest.mf,我們以生成乙個主介面模組mainwindow為例。右鍵專案選擇新建子專案 ...

微軟MSF框架學習筆記 6

msf構思階段及專案團隊的組建 msf構思階段 概述 目標 建立乙個關於專案的目標,限定條件和解決方案的概要檢視 團隊的工作重點 確定業務問題和機會 確定所需的團隊技能 收集初始需求 建立解決問題的方法 確定目標,假設和限定條件 建立配置與變更管理 解決可執行問題 為制定詳細計畫打基礎 五大階段的重...