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