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将无法加载它。

你可能感兴趣的:(QT/QML)