给 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 ...
随机推荐
- Angularjs^1.2.9 搜索关键字高亮显示
需求分析: 根据关键字搜索网页内容,并且高亮显示内容中的关键字细节分析: 1.每次执行搜索操作,需清空上一次结果 2.需区分html标签和正常文本内容,否则为关键字添加样式以后会出现标签内容被显示的情 ...
- RIP 相对寻址
知识共享许可协议本作品采用知识共享署名 4.0 国际许可协议进行许可.转载保留声明头部与原文链接https://luzeshu.com/blog/rip-relative-addressing 本博客 ...
- ubuntu下mysql二进制包安装
1.下载对应二进制包 cd /usr/local/srcsudo wget http://dev.mysql.com/downloads/file/?id=465030 2.解压并放在/usr/loc ...
- 蓝桥网试题 java 入门训练 A+B问题
---------------------------------------------------------------------------------------------------- ...
- linux系统盘使用率达到100%的问题查找和解决方法
今天公司云服务器报警系统发来短信,系统磁盘空间不够,登录服务器进行查看,磁盘使用虑达到100%, 感觉比较奇怪,所存的东西并不多,怎么会将磁盘占满,而且数据都是存在数据盘下,通过简单的进行 ...
- Linux驱动技术(七) _内核定时器与延迟工作
内核定时器 软件上的定时器最终要依靠硬件时钟来实现,简单的说,内核会在时钟中断发生后检测各个注册到内核的定时器是否到期,如果到期,就回调相应的注册函数,将其作为中断底半部来执行.实际上,时钟中断处理程 ...
- matlab中axis的使用
% 提示 disp ('该功能练习axis功能'); %初始化快捷式数组 x=-*pi:pi/:*pi; y=sin(x); plot(x,y); title('sin(x)图形'); grid on ...
- DataAdapter&&DataSet 帮助理解小程序
// 2105/07/08 // DataAdapter&&DataSet using System; using System.Collections.Generic; using ...
- gulp+browser-sync使用方法
gulp简介 gulp是基于流的自动化构建工具,也就是说gulp是通过操作流实现自动编译,压缩文件等操作的.这得益于node.js对流的支持,当然gulp.js和构建的任务文件都是JavaScript ...
- MATLAB中的分类器
MATLAB中的分类器 目前了解到的MATLAB中分类器有:K近邻分类器,随机森林分类器,朴素贝叶斯,集成学习方法,鉴别分析分类器,支持向量机.现将其主要函数使用方法总结如下,更多细节需参考MAT ...