添加 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 添加模块的更多相关文章

  1. 通过vs2015给QT添加模块

    Qt VS Tools->Qt Project Settings->Qt Modules

  2. Asp.Net Core子应用由于配置中重复添加模块会引起IIS错误500.19

    ASP.NET Core已经从IIS中解耦,可以作为自宿主程序运行,不再依赖IIS. 但我们还是需要强大的IIS作为前置服务器,IIS利用httpPlatformHandler模块来对后台的一些web ...

  3. Apache不重新编译,利用apxs工具给Apache添加模块,如cgi模块

    想实践下Apache是如何运行cgi程序的,却发现先前编译安装Apache的时候,没有安装Apache的cgi模块. 附:CentOS6.x编译安装LAMP(2):编译安装 Apache2.2.25 ...

  4. apache2添加模块和添加站点

    apache2添加模块和添加站点 linux下的apache2的目录和windows上的区别还是很大的,但是用起来却更方便了,详解请看另一篇文章http://www.cnblogs.com/wancy ...

  5. nginx添加模块 (非覆盖安装)

    nginx添加模块(非覆盖安装) 原已经安装好的nginx,现在需要添加一个未被编译安装的模块: 查看原来编译时都带了哪些参数# /usr/local/nginx/sbin/nginx -V ngin ...

  6. Qt 添加外部库文件(四种方法)

    Qt添加外部库文件, 一种就是直接加库文件的绝对路劲,这种方法简单,但是遇到多个库文件的时候,会很麻烦,而且,如果工程移动位置以后还需要重新配置 另一种就是相对路径了,不过Qt 编译的文件会在一个单独 ...

  7. Linux下Nginx的安装、升级及动态添加模块

    系统基于ubuntu server 14.04.4 amd64 安装 第一步 下载并解压Nginx压缩包 从Nginx官网下载Nginx,或者在Linux上执行wget http://nginx.or ...

  8. yii2 添加模块过程

    本文以Yii2基本应用程序模板为例,介绍下向该框架下加入新模块的过程: 1. 新建模块相关目录与文件 step 1: 新建目录结构   首先在根目录下新建modules目录,然后在该目录下面添加模块目 ...

  9. Linux下,Nginx的安装、升级及动态添加模块

    系统基于ubuntu server 14.04.4 amd64 安装 第一步 下载并解压Nginx压缩包 从Nginx官网下载Nginx,或者在Linux上执行wget http://nginx.or ...

随机推荐

  1. 深入React事件系统(React点击空白部分隐藏弹出层;React阻止事件冒泡失效)

    只关注括号内问题的同学,可直接跳转到蓝字部分.(标题起的有点大,其实只讨论一个问题) 两个在React组件上绑定的事件,产生冲突后,使用e.stopPropagation(),阻止冒泡,即可防止事件冲 ...

  2. 第七届蓝桥杯javaB组真题解析-煤球数目(第一题)

    题目 /* 煤球数目 有一堆煤球,堆成三角棱锥形.具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形), .... 如果一共有100层,共有 ...

  3. (@WhiteTaken)设计模式学习——抽象工厂模式

    抽象工厂模式,可以向客户端提供一个接口,而客户端不用指定具体的类型创建对象,却能够创建多个产品族(一类具有共性产品,如地域等)的对象. 下面直接上代码. 1.苹果需要实现水果的接口,而苹果可以有北方的 ...

  4. Ansible_自动化运维《Ansible之初识-1》

    1.Ansible简介 1.1 Ansible介绍 Ansible 是一个简单的自动化运维管理工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fab ...

  5. 搭建Eclipse开发和调试环境(真机)

    由于工作原因,最近开始了Android开发.之前接触过一段时间Android,还是在2.x时代. 那个时候搭建开发环境还是挺麻烦的.又是Eclipse,又是ADT的,不同的版本还要安装对应开发包.现在 ...

  6. PHPCMS 概念初学

    CMS是一个内容管理系统,主要是用来做企业站,也就是说我们在网上见到绝大部分的企业站都是用这个做的,有极少数的是用源生代码写的 如何安装? 1.从网站搜索下载安装包并解压 2.点击文件夹后显示一下两个 ...

  7. win8 wifi开关显示关闭,且设置里面wifi开关显示灰色的解决办法

    只要从华硕官网下载驱动,电源管理驱动,安装下面显示的几个软件即可,然后重启电脑,即可看见wifi热点,另外设置里面的wifi开关也将显示正常(刚开始安装了个驱动人生根本没用,最后在华硕官网下载了个电源 ...

  8. OpenGl编程指南第7版(红宝书)环境配制

    环境 OS:win7 旗舰版SP1 64位 编译器: VS 2013 express 的cl 软件 glut. 在这个页面https://www.opengl.org/resources/librar ...

  9. 在Angular中,如果权限值是异步请求所得,如何将其设置为HTTP请求头的Authorization?

    遇到此问题的背景:项目需要实现单点登录,在前后端分离的前提下,前台如何保存token值成为了一个问题.想到的解决方案是,将token值统一存到一个前端程序,其他的前端程序去这个前端程序去取token( ...

  10. 【转】Netty系列之Netty是什么

    Netty是什么 大概用Netty的,无论新手还是老手,都知道它是一个“网络通讯框架”.所谓框架,基本上都是一个作用:基于底层API,提供更便捷的编程模型.那么”通讯框架”到底做了什么事情呢?回答这个 ...