给 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 ...
随机推荐
- oracle求时间差的常用函数
oracle求时间差的常用函数 求时间差: 天: ROUND(TO_NUMBER(END_DATE - START_DATE)) 小时: ROUND(TO_NUMBER(END_D ...
- loadrunner:从数据库中取值进行参数化
下面我们介绍用数据库中的用户名来参数化登陆用户名. 框选住登陆名,点鼠标右键,弹出对话框,选择"替换为新参数"弹出对话框,此时参数名输入:name,参数类型选择File,如图 点& ...
- android:在ViewPager中使用Button
最近在项目用用到ViewPager ,其中页面包含有Button,因为之前也有使用个ViewPager ,所以这个也照搬之前的方式,测试后发现点击button无法执行,这个button是在第一页面的默 ...
- JS消化理解
JS执行的时候是必须在网页里面执行,和样式表差不多,也是内嵌的样式表,嵌在网页里面或外部的! 一 嵌在网页里面怎么嵌? 如果你想在网页里面嵌脚本,你需要在网页里面打出一块区域,这块区域来写脚本,在写样 ...
- 你不知道的getComputedStyle
你不知道的getComputedStyle jQuery的css()的底层实现就用到了getComputedStyle这个方法,也许我们用到的很少,但是不得不说这时一个非常强大的函数,下面让我们一探究 ...
- requests从api中获取数据并存放到mysql中
python的requests库是一个非常强大的库,requests的安装方法十分简单,用: pip install requests 即可安装requests,安装成功后: import reque ...
- PROC UNIVARIATE过程
EDA(探索性数据分析)最常用的过程步之一就是PROC UNIVARIATE. 首先先看一个最简单的PROC UNIVARIATE程序: PROC UNIVARIATE DATA=SASHELP.FI ...
- GIS制图课程前言
一直以来都想写一本关于电子地图制图的工具书,把过去所遇到的关于电子地图制图的种种方法.技巧和问题进行总结和归纳,传播电子地图制图的思路和心得. 从2010年开始,陆陆续续在华南地区开展了多场的电子地图 ...
- 时间处理之strtotime
strtotime (PHP 4, PHP 5, PHP 7)strtotime - 将任何英文文本的日期时间描述解析为 Unix 时间戳说明 int strtotime ( string $time ...
- 你需要了解的 Core Spotlight
你需要了解的 Core Spotlight -- 了解Spotlight Core Spotlight是iOS 9中苹果推出了新的Search API,可以直接搜App内的内容(in-App Sear ...