QT添加靜態插件static plugin
前言
在一些嵌入式編程中,經常需要靜態編譯Qt,這時候Qt插件需要手動加載
在pro中使用 QTPLUGIN
QTPLUGIN += QtQuick2ParticlesPlugin
其中添加的是插件類名:在qmldir文件裏面 classname 對應的值:
qmldir:
module QtQuick.Particles
plugin particlesplugin
classname QtQuick2ParticlesPlugin
typeinfo plugins.qmltypes
在cpp源文件中導入插件
Q_IMPORT_PLUGIN(QtQuick2ParticlesPlugin)
如果編譯提示找不到插件,再添加插件路徑
- 1 pro中
#--qmldir path
QT_PLUGIN_PATH += /home/wmx/Qt-5.9.0/qml/QtQuick.2
- 2 cpp 文件中
//--qmldir path
//--QQmlEngine::addPluginPath()
addPluginPath("/home/wmx/Qt-5.9.0/qml/QtQuick.2");
以上兩種方法選一個,添加的路徑是 qmldir 文件所在的路徑
添加import 語句 識別
Qt官方文檔 編寫qmltypes文件裏面提到:
QML模塊可以在其qmldir文件中引用一個或多個類型信息qmltypes文件。這些通常具有.qmltypes擴展名,並且可以由外部工具讀取,以獲取有關插件中定義的類型的信息。
因此,qmltypes文件對QML模塊的功能沒有影響。它們的唯一用途是允許Qt Creator之類的工具爲用戶提供代碼補全,錯誤檢查和其他功能。
任何使用插件的模塊都應附帶一個類型描述qmltypes文件。
- 1 爲模塊創建qmltypes文件
最佳方法qmlplugindump
示例:如果模塊位於中/tmp/imports/My/Module
,則可以運行
qmlplugindump MyMy.Module 1.0 /tmp/imports > /tmp/imports/My/Module/mymodule.qmltypes
- 2 在
/tmp/imports/My/Module/qmldir
文件末尾添加typeinfo mymodule.qmltypes
註冊它
儘管qmldump工具涵蓋了大多數情況,但在以下情況下無法使用:
- 1 插件使用QQmlCustomParser。使用自定義解析器的組件將不會記錄其成員。
無法加載該插件。 - 2 特別是,針對不同體系架構
交叉編譯
了該插件,則qmldump將無法加載它。