在前一篇文章如何在qt應用程式中載入外掛程式(一)中我們了解了qt外掛程式的概述,本篇給出詳細的例子如何去實現乙個動態外掛程式。
1 定義介面類:
1.1.定義共同介面(純虛類):
程式要能感知外掛程式,需要程式和外掛程式共同遵守某種規則。於是需要在主程式中定義乙個共同的介面,該介面直接和外掛程式類交流;
本例中定義乙個qcontactplugin inte***ce
#include
class qcontactplugininte***ce
virtual int getcontact(int v) = 0;
};1.2.使用巨集q_declare_inte***ce()
在qcontactplugininte***ce.h中新增以下**:
q_declare_inte***ce(qcontactplugininte***ce, "com.intel.plugin. qcontactplugininte***ce ");
q_declare_inte***ce定義在在qobject.h中,用來告訴qt meta-object system 這個介面名稱.
2.主程式部分:
主程式部分動態載入外掛程式的**如下:
foreach (qstring filename, pluginsdir.entrylist(qdir::files)) }}
以上這段**主要包含以下幾個步驟:
2.1.到指定路徑搜尋外掛程式
foreach (qstring filename, pluginsdir.entrylist(qdir::files))
3.編寫外掛程式:
pluginxx.h
//exampel, pluginxx.h
#include
#include " qcontactplugininte***ce.h"
class pluginxx:public qobject, public qcontactplugininte***ce
;pluginxx.cpp
// exampel pluginxx.cpp
#include "pluginxx.h"
pluginxx::pluginxx(qobject *parent)
:qobject(parent)
int pluginxx::getcontact(int v)
q_export_plugin2(pluginxx, pluginxx);
以上這段**主要包含以下幾個步驟:
3.1.宣告外掛程式類,
#include
#include " qcontactplugininte***ce.h"
class pluginxx:public qobject, public qcontactplugininte***ce
這個類繼承qobject 類和介面類,同時注意,需要將介面類的標頭檔案包含。
3.2.使用巨集q_inte***ces()
q_inte***ces(qcontactplugininte***ce)
q_inte***ces 使用在定義介面類時通過q_declare_inte***ce宣告過的介面。它同樣是用來告訴qt的moc系統,將使用qcontactplugininte***ce這個介面。
3.3.輸出外掛程式
q_export_plugin2(pluginxx, pluginxx);
使用巨集 q_export_plugin2()是讓qt知道pluginxx是乙個外掛程式,第乙個引數是外掛程式的名字,第二個引數是庫的名字,所以二者經常是相同的。
3.4.構建外掛程式.
#pluginxx.pro
template = lib
config += plugin
includepath += ../xx
headers = pluginxx.h
sources = pluginxx.cpp
destdir = ../
由以上.pro檔案,qt會自動將其編譯為動態外掛程式,在主程式執行時動態載入。
如何在qt應用程式中載入外掛程式(完)
摘自英特爾軟體網路:
如何在C 中編寫多執行緒應用程式
以前在使用vb來實現多執行緒的時候,發現有一定的難度。雖然也有這樣那樣的方法,但都不盡人意,但在c 中,要編寫多執行緒應用程式卻相當的簡單。這篇文章將作簡要的介紹,以起到拋磚引玉的作用!net將關於多執行緒的功能定義在system.threading名字空間中。因此,要使用多執行緒,必須先宣告引用此...
如何在瀏覽器中開啟windows應用程式
windows registry editor version 5.00 hkey classes root thunder url 迅雷專用鏈 editflags hex 02,00,00,00 url protocol hkey classes root thunder defaulticon ...
如何在Windows下發布QT應用程式?
當編譯完成qt程式生成可執行檔案後,發布到其他客戶端的方法有兩種 一種是使用靜態庫編譯 另一種是使用動態庫編譯,同時附上需要的動態庫。優點 發布簡單,只需要單一qt應用程式。缺點 庫檔案很大,更新程式版本不方便,每次公升級都需要重新發布所有的程式。mingw平台靜態編譯qt庫時,產生靜態編譯專案檔案...