自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

詳解 Qt 動(dòng)態(tài)插件編寫要點(diǎn)

移動(dòng)開(kāi)發(fā)
本文介紹的是Qt 動(dòng)態(tài)插件編寫要點(diǎn),一般在編程的過(guò)程中都要注意編寫規(guī)則,那么性質(zhì)一樣,先來(lái)看本文內(nèi)容。

Qt 動(dòng)態(tài)插件編寫要點(diǎn)是本文要介紹的內(nèi)容,有介紹Qt插件在.pro工程文件中的內(nèi)容,不多說(shuō)了,先來(lái)看內(nèi)容。

一、編寫插件的四個(gè)步驟

1. 聲明一個(gè)插件類。

2. 實(shí)現(xiàn)插件提供的接口。

3. 使用Q_EXPORT_PLUGIN2() 宏導(dǎo)出插件。

4. 使用一個(gè)適當(dāng)?shù)?pro工程文件構(gòu)建插件。

二、聲明插件類

我們繼承QObject和接口類(interface類)兩個(gè)類來(lái)構(gòu)造這個(gè)插件類。Q_INTERFACES宏告知Qt這個(gè)類實(shí)現(xiàn)的是哪個(gè)接口。如:

  1. Q_INTERFACES(FilterInterface) 

三、實(shí)現(xiàn)插件提供的接口

在插件類的實(shí)現(xiàn)文件中實(shí)現(xiàn)插件所提供的接口,供調(diào)用。

四、導(dǎo)出插件

在插件接口實(shí)現(xiàn)文件中,我們使用Q_EXPORT_PLUGIN2宏讓Qt知道該類是一個(gè)插件。如:

  1. Q_EXPORT_PLUGIN2(pnp_extrafilters, ExtraFiltersPlugin); 

***個(gè)參數(shù)是插件的名字;通常給予插件和其生成的目標(biāo)庫(kù)文件(.pro中TARGET變量所賦的名字)有著相同的名字。

五、動(dòng)態(tài)插件的 .pro工程文件

Here’s the project file for building the Extra Filters plugin:

TEMPLATE      = lib     //模塊設(shè)置,lib指生成庫(kù)文件,app指生成應(yīng)用程序(默認(rèn))

CONFIG       += plugin  //CONFIG用來(lái)告訴qmake關(guān)于應(yīng)用程序的配置信息,靜態(tài)插就添加為plugin static。
      
INCLUDEPATH  += ../..    //INCLUDEPATH變量設(shè)置全局頭文件的尋找路徑(例如使用

#include <…>包含的頭文件) “.”當(dāng)前目錄,”..”上一層目錄。(在這里是為了能夠添加接口定義文件interface.h)  

HEADERS       = extrafiltersplugin.h  //工程中包含的頭文件

SOURCES       = extrafiltersplugin.cpp //工程中包含的源文件

TARGET        = $$qtLibraryTarget(pnp_extrafilters) //TARGET變量指定生成的目標(biāo)庫(kù)文件的名字,生成應(yīng)用程序時(shí)即指定生成應(yīng)用程序名

通常TARGET和插件(由Q_EXPORT_PLUGIN2設(shè)置)擁有相同的名字。
    
DESTDIR         = ../../plugandpaint/plugins  //DESTDIR變量指定我們要安裝(生成)

插件的地方,即指定放置生成的應(yīng)用程序(插件)的目錄。
    
用藍(lán)色字體顯示的表示根據(jù)具體應(yīng)用程序會(huì)做相應(yīng)改變。

六、接口的定義

接口類定義了插件所提供的函數(shù)。一個(gè)接口是一個(gè)只由純虛函數(shù)組成的類。

我們使用Q_DECLARE_INTERFACE宏讓Qt的元對(duì)象系統(tǒng)(meta object system)注意到接口。如:

  1. Q_DECLARE_INTERFACE(FilterInterface, "com.trolltech.PlugAndPaint.FilterInterface/1.0"); 

這樣做才有可能在運(yùn)行時(shí)識(shí)別插件并實(shí)現(xiàn)接口。第二個(gè)參數(shù)是一個(gè)必須以唯一的方式識(shí)別接口的字符串。

注:Qt Creator編譯鏈接后會(huì)將可執(zhí)行文件生成到一個(gè)projectname_build_desktop的目錄中,如想要生成的文件生成在源代碼所在目錄下,方法如下:

 選擇Qt Creator左邊的“Project”標(biāo)簽,General欄目中有一個(gè)選擇框“Shadow Build”,取消即可。
 
Shadow Build也就是使構(gòu)建生成的目錄和源代碼目錄分開(kāi),可根據(jù)自己的使用習(xí)慣設(shè)置。

七、插件Qt工程文件.pro往Visual Studio 2005中的移植

Qt插件的.pro工程文件中,會(huì)包含構(gòu)建插件所需的特定配置信息,在VS 2005中寫插件程序時(shí),需要在工程屬性中進(jìn)行對(duì)應(yīng)配置,才能順利生成動(dòng)態(tài)插件。

注:在Qt或VS 2005中編寫Qt插件程序,都是建立Qt C++的控制臺(tái)應(yīng)用程序工程。

以下是Qt Creator中.pro文件和VS 2005中配置信息的對(duì)應(yīng)實(shí)現(xiàn)關(guān)系:

1、TEMPLATE     = lib   VS中對(duì)應(yīng)設(shè)置:工程屬性配置屬性常規(guī)項(xiàng)目默認(rèn)值配置類型其值改為 動(dòng)態(tài)庫(kù)(.dll)
  
2、CONFIG      += plugin  這個(gè)貌似在VS中沒(méi)有配置的地方

3、INCLUDEPATH += .  VS中對(duì)應(yīng)設(shè)置:工程屬性配置屬性C/C++常規(guī)附加包含目錄中其值在***添加.,即當(dāng)前路徑。
       
4、SOURCES += \      helloworldplugin.cpp
       
5、HEADERS += \     helloworldplugin.h
       
6、TARGET       = $$qtLibraryTarget(helloworld)    DESTDIR      = ./plugin  VS中對(duì)應(yīng)設(shè)置:工程屬性配置屬性鏈接器 輸出文件將其值改為 plugin\helloworld.dll

小結(jié):詳解 Qt 動(dòng)態(tài)插件編寫要點(diǎn)的內(nèi)容介紹完了,希望本篇文章對(duì)你有幫助?。?!

責(zé)任編輯:zhaolei 來(lái)源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-09-01 14:04:45

QT Webkit插件

2011-06-27 17:24:37

Qt 插件

2011-06-24 15:16:33

Qt 庫(kù) 插件

2011-09-01 16:01:25

Qt插件

2011-07-05 17:54:43

QT Sqlite ARM

2011-06-24 09:01:20

Qt QLibrary dll

2011-09-01 15:51:53

Qt插件VS 2010

2011-08-23 18:04:40

LuaWiresharkDissector

2011-06-30 13:37:29

MFC Qt 多國(guó)語(yǔ)

2011-07-05 17:07:46

Qt 插件 模塊

2011-07-05 16:59:15

Qt 動(dòng)態(tài) 鏈接庫(kù)

2011-06-23 10:16:55

VS2010 QT 4.7.2 QT

2011-06-16 13:23:35

Qt 模塊化 插件式

2012-05-10 09:46:02

動(dòng)態(tài)數(shù)據(jù)中心

2011-06-29 10:46:01

Qt Eembedded Linux

2011-04-06 16:02:26

Nagios插件

2011-03-28 11:20:11

Nagios 插件

2011-06-23 14:27:48

QT QLibrary 動(dòng)態(tài)庫(kù)

2011-07-13 10:36:53

Delphi

2011-04-21 09:46:41

設(shè)計(jì)模式
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)