如何在MeeGo Qt應用程式中載入外掛程式 二

2021-05-27 17:31:55 字數 2109 閱讀 4252

在前一篇文章如何在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庫時,產生靜態編譯專案檔案...