给 Qt 添加模块
添加 Qt 模块 QtCanvas3D
由于需要使用 Qt Quick 进行 3D 绘图,因此在网上找了一些资料。
JS 绘制 3D 的有 ThreeJS 库,应该可以用于 QML。继续搜索,发现Qt 里面有一个 QtCanvas3D 模块,可以用来进行 3D绘制。那就照着 Qt 官方教程做,首先导入该模块
import QtCanvas3D 1.1
但是问题来了,QtCreator 提示 “QML Module not found”,原来是电脑上没有这个模块,那就安装这个模块吧。找了一圈,没有找到比较好的安装模块的方法,最后找到了GitHub 上的 qtcanvas3d 源码地址
下载下来自己编译应该没什么问题。接下来谈谈安装模块的经历。
1. 下载相应版本的 qtcanvas3d ,我用的 Qt 版本是 5.6,下载后解压得到 qtcanvas3d-5.6 文件夹。

为了方便,我把它放到了 <QT Install Dir>/5.6 目录下(这里存放的是编译器相应配置和库的文件夹)。
2. 打开 qtcanvas3d-5.6/src/imports/qtcanvas3d 目录,直接用 QtCreator 打开 qtcanvas3d.pro ,得到一个 qtcanvas3d 工程

打开这个项目的属性,把构建设置的 Shadow Build 取消掉(当然也可以指定目标位置,但是我指定后没有编译出相应的 dll 文件)

构建,就能在 <Qt Install Dir>/5.6/qtcanvas3d-5.6/ 目录下得到新目录 qml,里面存放的文件夹 QtCanvas3D 就是编译得到的库文件。

上图就是我用 msvc 编译器编译得到的库文件,但是把 QtCanvas3D 整个文件夹复制到 <Qt Install Dir>/5.6/msvc20xx_64/qml 目录下,在 QtCreator 里面还是会显示找不到 QtCanvas3D 模块。
3. 参考官方文档 QML Modules ,这里说明了要想添加插件,还需要两个文件 qmldir 和 plugins.qmltypes 。这两个文件在源代码中就有(上图中的 qtcanvas3d 项目中的两个文件就是我们需要的文件),
复制到相应的目录,重新打开 QtCreator,再看项目,发现 “Module not found” 提示已经消失。成功导入模块!
-----------------------------------------------
在添加 qtcanvas3d 库时,犯了一个很蠢的错误。
我先用 MinGW 32 编译出了库文件,然后把库文件复制到 <Qt Install Dir>/5.6/mingwxx_xx/qml 目录下,但是把 qmldir 和 plugins.qmltypes 复制相应位置,还是提示我没有找到模块。
最后发现,我的项目是用的 msvc 编译器,查找插件是到 msvc 相应目录查找,难怪我怎么修改都没有办法把插件添加进去。最后重新用 msvc 编译 QtCanvas3D ,放到 msvc 编译器的插件目录下面,就好了。
根据论坛里的答复,也可以自定义插件路径,要在构建环境里添加一个 QML2_IMPORT_PATH 变量,指向相应目录,试过这个办法,但是没什么用。
给 Qt 添加模块的更多相关文章
- 通过vs2015给QT添加模块
Qt VS Tools->Qt Project Settings->Qt Modules
- Asp.Net Core子应用由于配置中重复添加模块会引起IIS错误500.19
ASP.NET Core已经从IIS中解耦,可以作为自宿主程序运行,不再依赖IIS. 但我们还是需要强大的IIS作为前置服务器,IIS利用httpPlatformHandler模块来对后台的一些web ...
- Apache不重新编译,利用apxs工具给Apache添加模块,如cgi模块
想实践下Apache是如何运行cgi程序的,却发现先前编译安装Apache的时候,没有安装Apache的cgi模块. 附:CentOS6.x编译安装LAMP(2):编译安装 Apache2.2.25 ...
- apache2添加模块和添加站点
apache2添加模块和添加站点 linux下的apache2的目录和windows上的区别还是很大的,但是用起来却更方便了,详解请看另一篇文章http://www.cnblogs.com/wancy ...
- nginx添加模块 (非覆盖安装)
nginx添加模块(非覆盖安装) 原已经安装好的nginx,现在需要添加一个未被编译安装的模块: 查看原来编译时都带了哪些参数# /usr/local/nginx/sbin/nginx -V ngin ...
- Qt 添加外部库文件(四种方法)
Qt添加外部库文件, 一种就是直接加库文件的绝对路劲,这种方法简单,但是遇到多个库文件的时候,会很麻烦,而且,如果工程移动位置以后还需要重新配置 另一种就是相对路径了,不过Qt 编译的文件会在一个单独 ...
- Linux下Nginx的安装、升级及动态添加模块
系统基于ubuntu server 14.04.4 amd64 安装 第一步 下载并解压Nginx压缩包 从Nginx官网下载Nginx,或者在Linux上执行wget http://nginx.or ...
- yii2 添加模块过程
本文以Yii2基本应用程序模板为例,介绍下向该框架下加入新模块的过程: 1. 新建模块相关目录与文件 step 1: 新建目录结构 首先在根目录下新建modules目录,然后在该目录下面添加模块目 ...
- Linux下,Nginx的安装、升级及动态添加模块
系统基于ubuntu server 14.04.4 amd64 安装 第一步 下载并解压Nginx压缩包 从Nginx官网下载Nginx,或者在Linux上执行wget http://nginx.or ...
随机推荐
- win7如何安装mircosoft SDKs
WIN7不能安装SDK 7.1是因为系统程序里含Microsoft .NET Framework 4 Extended和Microsoft .NET Framework 4 Client Profil ...
- php之 人员的权限管理(RBAC)
1.想好权限管理的作用? 2.有什么权限内容? 3.既然有权限管理那么就会有管理员? 4.登录后每个人员的界面会是不一样的? 一.想好这个权限是什么? 就做一个就像是vip的功能,普通用户和vip用户 ...
- java操作redis redis连接池
redis作为缓存型数据库,越来越受到大家的欢迎,这里简单介绍一下java如何操作redis. 1.java连接redis java通过需要jedis的jar包获取Jedis连接. jedis-2.8 ...
- android 获取适配的bitmap等相关
获取适配尺寸的图片: File files = new File(imagePath); FileInputStream is = null; BufferedInputStream bis = nu ...
- LPC4370使用学习:GPIO的引脚功能使用,和12864OLED模拟I2C驱动
一: 手中有块LPC4370的开发板,因为便宜,所以引脚引出的不多,而且只有基本的底板资源驱动代码和例程. 看着手册和例程看了老半天,写程序写了半天,结果GPIO老是驱动不起来,因为引脚配置寄存器中有 ...
- 蓝桥网试题 java 基础练习 分解质因数
-------------------------------------------------------------------------- 递归更多的用在多分支情况中 本题用循环就可以了 用 ...
- DB2_自动生成值
生成数字序列的两种方法 在 DB2 中可以用两种方法自动生成一个数字序列: 定义带有 IDENTITY 属性的列. 创建 SEQUENCE 对象. IDENTITY 列 当用 IDENTITY 属性定 ...
- 8个新鲜的PHP常用代码
/** * +---------------------------------------------------------- * 生成UUID 单机使用 * ...
- 判断iPhone的WiFi是否打开的两种方法 之是否连接上 WiFi
iOS中用来查询当前连接的网络信息的API即CNCopyCurrentNetworkInfo 这个API位于SystemConfiguration.framework里面,使用时需要增加.h和包含库文 ...
- JavaScript 基本类型值-String类型
▓▓▓▓▓▓ 大致介绍 String类型用于表示由零或多个16位Unicode字符组成的字符序列,即字符串.在JavaScript中没有单个的字符型,都是字符串.字符型就相当于只包含一个字符的字符串. ...