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