zoukankan      html  css  js  c++  java
  • 给 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 变量,指向相应目录,试过这个办法,但是没什么用。

    本博客由 BriFuture 原创,并在个人博客(WordPress构建) BriFuture's Blog 上发布。欢迎访问。
    欢迎遵照 CC-BY-NC-SA 协议规定转载,请在正文中标注并保留本人信息。
  • 相关阅读:
    按位异或运算符^
    最大公约, 最小公倍数算法
    屏幕取词技术实现原理与关键源码
    Program Manager Design
    Datanode没起来,报错RemoteException(org.apache.hadoop.hdfs.protocol.UnregisteredNodeException)的解决方案...
    这段代码让我很生气
    自动给qq邮箱发信,会被屏蔽
    数据和文件自动备份
    java.lang.OutOfMemoryError: PermGen space
    公交离线查询——全国300多个城市
  • 原文地址:https://www.cnblogs.com/brifuture/p/6525452.html
Copyright © 2011-2022 走看看