日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Qt入门(11)——Qt插件

發布時間:2025/3/15 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt入门(11)——Qt插件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Qt提供了一個簡單地插件接口,可以輕松地生成作為獨立組件的定制數據庫驅動、圖象格式、文本編解碼器(text codec)、風格(style)和部件。


警告:Qt 3.0.5對插件的一些方面做了改變,具體涉及到裝載、路徑操作和庫版本。這些變化的結果是,Qt 3.0.4及以前版本編譯的插件都不能用于Qt 3.0.5及以后版本。


寫一個插件通過以下方式完成:寫適當的插件基類的子類,實現幾個函數,再添加一個宏。


一共有五個插件基類。派生的插件缺省保存于標準插件目錄。


基類缺省路徑
QImageFormatPlugin $QTDIR/plugins/imageformats QSqlDriverPlugin $QTDIR/plugins/sqldrivers QStylePlugin $QTDIR/plugins/styles QTextCodecPlugin $QTDIR/plugins/codecs QWidgetPlugin $QTDIR/plugins/designer

假設你有一個新的風格類,叫做'MyStyle',你要把它做成插件的形式。需要的代碼直截了當:


class MyStylePlugin : public QStylePlugin{public:MyStylePlugin() {}~MyStylePlugin() {}QStringList keys() const { return QStringList() << "MyStyle"; }QStyle* create( const QString& key ) { if ( key == "MyStyle" ) return new MyStyle;return 0;}};

? ? Q_EXPORT_PLUGIN( MyStylePlugin )
構造器和解構器不需要做什么,空的就可以。有兩個虛函數一定要實現。第一個是keys(),它返回在插件中實現的類的一個字符串列表。(我們在上面的例子中剛剛實現了一個類。)第二個是一個函數,它返回所要的類的一個對象(或者0,如果插件被要求生成一個不存在的類的對象)。對于QStylePlugin來說,這第二個函數叫做create()。


可以在一個插件里實現任意數目的插件子類,只要他們都是由同一個基類,比如說,QStylePlugin,派生出來的。


對于數據庫驅動、圖象格式、定制部件和文本編解碼器,不需要顯式的對象生成過程。Qt會按需求查找并生成他們。風格則是例外,因為你可能想以代碼顯式地設置一個風格。應用一個風格,可以使用類似代碼:


QApplication::setStyle( QStyleFactory::create( "MyStyle" ) );

有的插件類還需要實現其他函數。關于一個QWidgetPlugin的完全例子,可參見Qt設計器手冊中'生成定制部件'一章的'生成定制部件'節。這個例子實現了額外的函數,以把該插件集成到Qt設計器中去。QWidgetFactory類提供了關于QWidgetPlugin的附加信息。


關于每種類型的插件必須要實現哪些虛擬函數,詳見該類的文檔。


Qt的應用自動辨識哪些插件可用,因為插件都是保存在標準插件子目錄下的。為此,應用不需要任何查找和裝載插件的代碼,既然Qt已自動處理了。


插件的缺省目錄是$QTDIR/plugins,每種類型的插件在那種類型的子目錄下,比如說,風格(styles)。如果你想要你的應用使用插件但不要標準插件路徑,可以讓你的安裝程序決定你要為插件使用的路徑,然后保存該路徑,比如說使用QSettings,以使應用在運行時可以讀取。之后應用可以用該路徑調用QApplication::addLibraryPath(),就可以使用你的插件了。注意,路徑的最后部分,也就是說,styles、widgets等等,不能改變。


應用包括一個插件的正規方法是,要么把插件與應用一起編譯,要么把插件編譯為DLL(或者so或者其他平臺指定的庫類型),像其他庫那樣使用。如果要讓插件可裝載,一個方法是,生成一個應用下的子目錄,例如,appdir/plugins/designer,把插件放置到該目錄下。

轉載于:https://www.cnblogs.com/new0801/p/6176889.html

總結

以上是生活随笔為你收集整理的Qt入门(11)——Qt插件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。