QT添加靜態插件static plugin 和 添加import 語句 識別

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將無法加載它。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章