QT qt 3d 绘图
admin
2024-04-28 18:46:29
0

qt 3d 绘图

首先不得不说,要感谢北京邮电大学的阿科。感谢他慷慨的分享和极具科学态度的记录,将自己搜集到的众多资料收集整理发布,拯救众多苦逼寻找方案的程序员于苦海之中。因为最近接手新的项目,涉及到使用opengl做surface plot编程。第一个想到的就是能否使用现有的开源API来完成这些工作。通过多方寻找,我发现了两个开源的project:

1 qwtplot3d

2 Sapphire-3D-Surfaces

注意这里我使用的开发环境是Qt,语言为C++。

第二个下载源代码,再win7的Qt Creator一下就编译通过了。但是第一个却很艰难,于是各方寻找解决方案,最终在阿科的博客中找到了比较详细的解决方法,原文链接:(http://blog.csdn.net/qinpanke/article/details/8062517)

阿科的方法基本是正确的,但是在细节上与我的实际实验结果有所不同,我将以阿科的内容为基础,增加一些自己实际实验的内容。

          1、从网上下载qwtplot3D的最新版本:http://qwtplot3d.sourceforge.net/

          2、解压qwtplot3d-0.2.7.zip到C盘根目录下(注意:路径中不能带有中文汉字)。

          3、打开C:\qwtplot3d-0.2.7\qwtplot3d,将会看到qwtplot3d.pro文件。

          4、用QtCreator打开qwtplot3d.pro文件,并执行编译命令会出现如下如下错误:No rule to target 'Makefile.Debug'.  Stop.如下图所示:

          解决方法:

          双击并打开上图左侧中的qwtplot3d.pro文件,修改该文件部分内容:  win32:TEMPLATE= vclib   修改为: win32:TEMPLATE= lib

          5、修改完成后,再次点击编译运行。会再次出现错误:'stderr' was not declared in this scope  和  'fprintf' was not declared in this scope。 如下图所示:

解决方法:

           打开左侧Source》src》qwt3d_function.cpp文件。并在顶部添加语句:#include "stdio.h"

           6、再次编译。即可顺利完成qwtplot3d工程的编译,不会再遇到错误。

           (这个地方实际还是会有错误的,会出现红色的输出提示“The process could not be started!”,但是已经生成了C:\qwtplot3d-0.2.7\qwtplot3d-build-desktop\lib目录下面的libqwtplot3d.a和qwtplot3d.dll,只要生成了就可以了,由上面的错误没有关系)

          此时,打开C:\qwtplot3d-0.2.7\qwtplot3d-build-desktop\lib文件夹。会看到生成两个动态库文件:libqwtplot3d.a和qwtplot3d.dll。这就是编译好的qwtplot3d的动态库文件。作为开发而言,就可以直接使用。当然,我们不仅仅是希望编译生成动态库,还希望将qwtplot3d自带的Demo编译并运行通过。没问题,继续看下面的。

          复制C:\qwtplot3d-0.2.7\qwtplot3d-build-desktop\lib文件夹到C:\qwtplot3d-0.2.7\qwtplot3d\下面

          7、编译qwtplot3d自带的Demo程序。打开C:\qwtplot3d-0.2.7\qwtplot3d\examples文件夹。用QtCreator打开example.pro文件,点击编译运行,同样会出现No rule to target 'Makefile.Debug'.  Stop的错误。这里需要修改的pro文件是common.pro文件。

解决方法:

          打开common.pro文件。删除语句:TEMPLATE = vcapp和 QMAKE_LFLAGS += /NODEFAULTLIB:msvcrt

         8、修改完成后,再次编译example.pro文件会出现 :: error: ../../lib/qwtplot3d.lib: No such file or directory 。(注意:也可能是出现无法 make 的错误。其实也是这个原因导致的,同样按照下面的修改方法也可以解决)

         修改方法:

         打开common.pro文件。修改语句:LIBS+= ../../lib/qwtplot3d.lib  修改为:LIBS+= ../../lib/libqwtplot3d.a(这里换成那个dll的动态链接库文件也是可以的,因为.a文件是linux下的动态链接库文件,而.dll是window下面的动态链接库文件)

        9、修改完成后,再次编译example.pro文件就不会出现错误。但是,编译完成运行的时候出现:

         Starting C:\qwtplot3d-0.2.7\qwtplot3d\examples-build-desktop\bin\autoswitch.exe...

         C:\qwtplot3d-0.2.7\qwtplot3d\examples-build-desktop\bin\autoswitch.exe exited with code -1073741515

        出现这个问题的原因是动态库没有在example生成的可执行文件的目录下。

解决方法:

    打开C:\qwtplot3d-0.2.7\qwtplot3d\lib文件夹,拷贝两个文件libqwtplot3d.a和qwtplot3d.dll。到文件夹:C:\qwtplot3d-0.2.7\qwtplot3d\examples-build-desktop\bin。(注意:这是我example生成的文件夹,要看一下你自己的生成的是不是这个位置)

   10、正确运行。看一下运行结果吧。

   实际的运行结果有多个,因为这个example里面有很多个例子,可以选择运行哪个例子:

运行结果大家可以看阿科的博客,也可以自己尝试,是出现不同的surface plot图像

相关内容

热门资讯

linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
C++ 机房预约系统(六):学... 8、 学生模块 8.1 学生子菜单、登录和注销 实现步骤: 在Student.cpp的...
A.机器学习入门算法(三):基... 机器学习算法(三):K近邻(k-nearest neigh...
数字温湿度传感器DHT11模块... 模块实例https://blog.csdn.net/qq_38393591/article/deta...
有限元三角形单元的等效节点力 文章目录前言一、重新复习一下有限元三角形单元的理论1、三角形单元的形函数(Nÿ...
Redis 所有支持的数据结构... Redis 是一种开源的基于键值对存储的 NoSQL 数据库,支持多种数据结构。以下是...
win下pytorch安装—c... 安装目录一、cuda安装1.1、cuda版本选择1.2、下载安装二、cudnn安装三、pytorch...
MySQL基础-多表查询 文章目录MySQL基础-多表查询一、案例及引入1、基础概念2、笛卡尔积的理解二、多表查询的分类1、等...
keil调试专题篇 调试的前提是需要连接调试器比如STLINK。 然后点击菜单或者快捷图标均可进入调试模式。 如果前面...
MATLAB | 全网最详细网... 一篇超超超长,超超超全面网络图绘制教程,本篇基本能讲清楚所有绘制要点&#...
IHome主页 - 让你的浏览... 随着互联网的发展,人们越来越离不开浏览器了。每天上班、学习、娱乐,浏览器...
TCP 协议 一、TCP 协议概念 TCP即传输控制协议(Transmission Control ...
营业执照的经营范围有哪些 营业执照的经营范围有哪些 经营范围是指企业可以从事的生产经营与服务项目,是进行公司注册...
C++ 可变体(variant... 一、可变体(variant) 基础用法 Union的问题: 无法知道当前使用的类型是什...
血压计语音芯片,电子医疗设备声... 语音电子血压计是带有语音提示功能的电子血压计,测量前至测量结果全程语音播报࿰...
MySQL OCP888题解0... 文章目录1、原题1.1、英文原题1.2、答案2、题目解析2.1、题干解析2.2、选项解析3、知识点3...
【2023-Pytorch-检... (肆十二想说的一些话)Yolo这个系列我们已经更新了大概一年的时间,现在基本的流程也走走通了,包含数...
实战项目:保险行业用户分类 这里写目录标题1、项目介绍1.1 行业背景1.2 数据介绍2、代码实现导入数据探索数据处理列标签名异...
记录--我在前端干工地(thr... 这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前段时间接触了Th...
43 openEuler搭建A... 文章目录43 openEuler搭建Apache服务器-配置文件说明和管理模块43.1 配置文件说明...