詳解如何建立Qt外掛程式學習教程

2021-07-11 02:35:42 字數 3458 閱讀 2701

如何建立qt外掛程式學習教程是本文要介紹的內容,主要是來了解qt中外掛程式的應用,如何來建立,文中有詳解,具體內容的實現來看詳解。

qt提供2個api來建立外掛程式

1、高層api擴充套件qt庫。例如定製的資料庫驅動,影象格式,字元編碼,custom styles

2、底層api擴充套件qt應用程式

例如,如果想寫自定義qstyle的子類,並讓應用程式動態載入,需要使用高層api函式

因為高層api在底層api基礎上構造,兩者需要注意一些問題。

如果需要提供給qt designeder外掛程式,請參考qtdesigner模型文件

高層api

利用繼承特定的基類來實現外掛程式,需要實現其中的一些函式,並增加乙個巨集

qt中有不少外掛程式的基類可供使用,繼承的外掛程式預設儲存在標準外掛程式目錄的子目錄下,否則qt會找不到。

設計乙個style類名為mystyle的外掛程式

檔案mystyleplugin.h:

class mystyleplugin : public qstyleplugin  

;  mystyleplugin.cpp  

#include "mystyleplugin.h"  

qstringlist mystyleplugin::keys() const  

qstyle *mystyleplugin::create(const qstring &key)  

q_export_plugin2(pnp_mystyleplugin, mystyleplugin) 

風格實現

檔案mystyle.h:

class mystyle : public qwindowsstyle  

;  void polish(qpalette &palette);  

};

繼承自qwindowsstyle

風格實現

void mystyle::polish(qpalette &palette)  

(注意其中實現的大小寫方式)。

實現資料庫驅動,影象格式、文字編碼和大多數其他外掛程式型別時,一般不需要建立物件,qt會找到他們並建立他們的物件。style是乙個特例,因為程式中科能會這樣呼叫:

main.c檔案:

int main(int argv, char *args)  

工程檔案:

template

= lib

config     += plugin  

headers

= ******style

.h \  

******styleplugin.h  

sources

= ******style

.cpp \  

******styleplugin.cpp  

target

= ******styleplugin

注意,外掛程式需要設定template,因為我們需要的是共享庫而不是執行程式。同時必須設定config。需要將此外掛程式儲存到style資料夾(應用程式所在的資料夾)。這樣應用程式就能夠檢測得到。

底層api:沒有詳細研究

不管是qt本身還是qt應用程式都可以通過外掛程式擴充套件。這需要應用程式檢測並通過qpluginloader進行載入。因此,外掛程式可以提供任意功能,而不僅限於上面說的外掛程式。

外掛程式擴充套件應用包括4個步驟

1、定義外掛程式的介面集(實際上是只有虛函式的乙個類)

2、q_declare_inte***ce巨集告訴meta-object系統此介面的存在。

3、利用qpluginloader載入外掛程式

4、使用qobject_cast()函式測試外掛程式實現的藉口

外掛程式編碼的4個步驟

1、繼承qobject定義乙個外掛程式類,並定義外掛程式需要的介面

2、使用q_inte***ces()巨集告訴meta-object系統介面的存在

3、使用q_export_plugin2()巨集輸出外掛程式

4、編譯工程

例如下面例子:

介面類:

class filterinte***ce    //只有虛函式的類  

virtual qstringlist filters() 

const= 0

;  virtual qimage filterimage(const qstring &filter, const qimage &image,  

qwidget *parent) = 0;  

};

外掛程式類,實現介面

#include 

<

qobject

>

#include 

<

qstringlist

>

#include 

<

qimage

>

#include 

<

plugandpaint

/inte***ces.h

>

class extrafiltersplugin : public qobject, public filterinte***ce  

;

定位外掛程式

qt應用程式自動載入外掛程式,因為外掛程式存在標準外掛程式的子目錄中

開發過程中,外掛程式的目錄在qtdir/plugins中(qdir是qt安裝的目錄)。如果希望應用程式使用或不使用標準外掛程式,安裝會得到希望安裝外掛程式的路徑,並儲存路徑(例如應用程式使用qsettings在啟動時讀取它)

如果希望外掛程式可被載入,一種方法是在應用程式的所在目錄的子目錄下儲存此外掛程式。如果想發布qt自帶的任何外掛程式,需要拷貝plugins的子目錄到應用程式的根目錄下。(而不是包含外掛程式的目錄)

靜態外掛程式

一般的方法是將外掛程式做成動態庫和應用程式一塊發布。外掛程式動態檢測和載入。

應用程式可以靜態鏈結。假如編譯的是靜態的qt庫,那麼靜態外掛程式就是唯一的選擇了。使用靜態外掛程式可以降低錯誤概率。但是缺點是修改外掛程式需要重新編譯整個應用程式。

qt提供一些靜態的外掛程式:

為了靜態鏈結外掛程式,需要在程式中使用q_import_plugin巨集,需要在編譯時使用qtplugin引數。例如,在main.cpp中

#include 

<

>

#include 

<

qtplugin

>

q_import_plugin(qjpeg)  

q_import_plugin(qgif)  

q_import_plugin(qkrcodecs)  

int main(int argc, char *argv)  

工程檔案中

qtplugin     += qjpeg \  

qgif \  

qkrcodecs 

小結:詳解如何建立qt外掛程式學習教程的內容介紹完了,希望通過本文的學習能對你有所幫助!

from: 

如何建立Qt外掛程式

qt提供了兩個用於建立外掛程式的api 編寫擴充套件qt本身的外掛程式是通過對相應的外掛程式基類進行子類化,實現一些功能以及新增巨集來實現的。通過外掛程式不僅可以擴充套件qt本身,而且可以擴充套件qt應用程式。這要求應用程式使用qpluginloader檢測和載入外掛程式。在這種情況下,外掛程式可以...

chrome 外掛程式開發 教程00(如何開發外掛程式)

chrome外掛程式分為兩種 一種是出現在瀏覽器工具欄中的browser actions,另一種就是出現在位址列中的page actions,這兩者的區別是 ba外掛程式的功能對所有的頁面都可以使用,但是pa外掛程式只會對一些特定的頁面位址才會生效的外掛程式,所以它對於不生效的頁面是隱藏不顯示的。a...

Qt學習記錄九之Qt5平台外掛程式建立流程

然後呼叫 init platform qlatin1string platformname platformpluginpath,platformthemename,argc,argv 通過平台外掛程式建立工廠建立 qplatformintegrationfactory create const q...