如何編寫乙個Qt外掛程式

2021-10-01 02:49:29 字數 1682 閱讀 9483

qt版本:qt5.9.7

編譯套件:msvc2015-64bit

qt外掛程式分為低階外掛程式和高階外掛程式,所謂的高階外掛程式是在qt已經存在的介面外掛程式上實現擴充套件,qt還是提供了很多的多**的外掛程式供開發者使用,比如qaudiosystemplugin、qmediaresourcepolicyplugin等;低階外掛程式則自己定義介面,自己來實現,本篇主要講解低階外掛程式的編寫及使用。

qt外掛程式可以做成動態外掛程式,使用qpluginloader類來載入,也可以做成靜態外掛程式,兩者的不同點區別在於pro檔案配置上。靜態外掛程式主要在pro中新增config += static,在使用上,需要主程式中通過q_import_plugin() 來匯入外掛程式,在主程式的pro中還需要配置libs來鏈結外掛程式庫。靜態外掛程式在使用上不靈活,一般使用qpluginloader來載入外掛程式。

外掛程式的介面定製為純虛函式,並使用q_declare_inte***ce進行宣告,如下:

#include class widgetinte***ce

virtual qwidget* getwidget() = 0;

};q_declare_inte***ce(widgetinte***ce, "nt.widget.inte***ce/1.0")

然後我們來實現這個介面,在實現類中要用巨集q_inte***ces宣告一下介面類來達到反射的作用,widgetplugin.json檔案可以存放外掛程式本身的資訊(外掛程式名稱、外掛程式版本等),如下:

class widgetplugin : public qobject, public widgetinte***ce

;

#include "widgetplugin.h"

widgetplugin::widgetplugin()

widgetplugin::~widgetplugin()

qwidget *widgetplugin::getwidget()

這樣,我們就能得到乙個簡單的自定義外掛程式,下面我們將介紹如何載入外掛程式。

外掛程式的pro檔案:

qt += widgets

template = lib

config += c++11 plugin

target = widgetplugin

distfiles += \

widgetplugin.json

headers += \

widgetplugin.h

sources += \

widgetplugin.cpp

我們使用qpluginloader來載入外掛程式,如下所示:

qstring t_pluginpath = "";//外掛程式所在路徑

auto plugin = new qpluginloader(t_pluginpath);

//獲取外掛程式josn檔案中資訊

qstring key = plugin->metadata().value("metadata").toobject().value("key").tostring();

if(plugin->load())

}

外掛程式的使用能夠很好的擴充套件應用程式功能,主程式假設有4個介面塊,可以使用外掛程式分別實現,降低程式的耦合度,但是外掛程式之間資料互動如何實現的?下篇文章我們再來分析

編寫乙個Chrome外掛程式

也可說是突然萌生出來的乙個想法 編寫乙個chrome外掛程式。其實最終的目的,還是為了解決工作中的一些問題。比如當前開發專案的自動登入功能。chrome擴充套件可以看做是乙個迷你版的站點。它更多的是用來提供功能擴充套件,而不側重內容展示。所以,它的實際組成是一組html css script檔案。b...

如何編寫乙個 XML Schema

看看這個名為 shiporder.xml 的 xml 文件 george bush john adams oxford street london uk empire burlesque special edition 110.90 hide your heart 19.90 說明 上面的xml文件...

如何編寫乙個ajax?

這裡要注意ie的相容問題 oajax.open get url,true 傳輸方法 method 有get方法和post方法。url 就是位址 傳輸方式 async true false 當請求被傳送到伺服器時,我們需要執行一些基於響應的任務。每當 readystate 改變時,就會觸發 onrea...