一、背景
网上找到一位大神的生成二维码Qt QML Demo,想要运行一下看看,编译很顺利,但是一运行就报“module "com.duoduo.components" is not installed”这个错误,这个问题费了些时间,所以还是简单记录下。
二、
首先贴出来我参考的链接:
链接2:QML插件扩展(一)
链接1是我获取Demo的源头,但是没有说关于我遇到的问题相关(大神应该是没遇到)。链接2是帮助我解决问题的方法。
实际上很简单,再报这个错误的时候添加一行代码即可:
engine.addImportPath("/home/xxx/xxx/qrencode/qtquickqrencode-master/");
但是这块有三个小坑需要注意:
1、你添加的路径是你制作插件时qmldir文件中Moudle后的那个名字(根据我目前的实践,moudle后跟的名字不只是导入时用到的名字也是模块或者叫插件应该所在的路径)的上一级目录,如我的:
qmldir文件内容:
代码中的路径: /home/xxx/xxx/qrencode/qtquickqrencode-master/,就像链接2博客中讲到的一样,路径要到moudle的写的路径的上一级,如我到com文件夹的上一级,如果不是这个路径就会报moudle未安装;
2、你生成的插件应该和你的qmldir在统一目录下,否则也会报错,找不到moudle;
3、如下图中,语句一 一定要在语句二的前面,否则一样会报错。
以上是需要注意的问题。
三、插件的制作
这个主要涉及到QQmlExtensionPlugin类,当然链接2讲的还是比较好的。
关于插件的用法的博客讲的还是比较多的,此处不再赘述:
链接3:QML使用C++编写的插件
以上链接参考完成,应该可以会用了。