Ubuntu中在QT中配置OpenGL
之前搞实验室项目,博客有些天没有更新。现在学习需要,开始搞OpenGL+Ubuntu+QT。
搞了整整一天,由于是首次使用ubuntu,所以这ubuntu下配置qt和Opengl环境时走了很多的弯路,现在终于配好了我想要的环境,记录下今天的弯路过程:
- 这ubuntu中(我的版本是13.4)首先这qt官网下载了qt的安装包。这个安装过程还是很简单的。
- 出现问题的是接下来的OpenGL的配置过程。
- 首先,我按照教程http://www.qiliang.net/old/nehe_qt/index.html中的准备方法去配置的。也就是要装一个Mesa,然后接下来就是Mesa安装教程(http://blog.csdn.net/wm111/article/details/7661506 、http://www.cnblogs.com/leon032/archive/2012/07/18/2597860.html )中出现的各种安装失败的error。不是缺这个,就是缺那个,问题是有的缺的,软件中心还找不到。这个过程,整整花了一个中午和下午的时间。后来,实在是解决不了了,果断查询有没有其他方法。
- 使用教程:在Ubuntu下如何开发配置OpenGL环境? 安装环境成功。主要步骤(Ctrl+Alt+T打开终端,使用以下命令):
- sudo apt-get install build-essential
- sudo apt-get install libgl1-mesa-dev libglu1-mesa-dev
- sudo apt-get install mesa-common-dev freeglut3-dev
- sudo apt-cache search glew
- 将搜索到的带有"glew"的都安装一遍,下面xx即为对应的程序名
- sudo apt-get install xxx
- 至此,其实已经可以用了,上面的freegult那个是Opengl的一个开源库。这篇教程里还附有段代码用来检测是否安装Opengl成功的。使用g++来测试,是可以成功运行的(QT不行)。
- 另外,uBuntu上面的g++要自己进行安装,安装命令:sudo apt-get install g++
- 那么,接下来我开始学习教程:http://www.qiliang.net/old/nehe_qt/index.html 的第一课(本课程的源代码)。并说明我所遇到的问题。
- 首先,使用QT打开代码,开始构建,出现错误如下:
|
- 查找原因,在lesson01.pro配置文件中少了一句:"QT += opengl widgets"再次构建,问题解决。但出现下面问题:
|
- 首先看第一个。意思是没有匹配的函数,原代码如下:
|
- 由于NeHeWidget函数继承自QGLWidget,所以我去查了下QGLWidegt文档,结果如下:
|
- 很明显,第二个参数的类型错误。将原来的char 改正为:QGLWidget后,同时还要在NeHeWidget类定义里将对应的构造函数也进行更改(如下图所示,已改正)。再次构建,这个问题已经消除。
|
- 第二个问题:函数"setCaption"未定义,查找资料得知,由于这QT4以后都没有了这个函数,而是使用setWindowTitle代替。所以这里将其改正。构建,成功。
- 第三个问题:函数"gluPerspective"从其glu开头可看出是Opengl函数,这里显示未定义,所以应该是未找到。查找资料得知:
- 首先确定有没有按上面安装freeglut3-dev
- 如果没有,最好再来一次:sudo apt-get install freeglut3-dev
- 在pro文件中添加:LIBS += -lglut -lGLU
- 这使用到这个函数的地方加上头文件:#include<GL/glu.h>
- 再次构建,问题解决。
- 第四、五个问题,从字面意思上,很容易看出,没有识别出类:QKeyEvent,想到是否是没有包含进来,查看果然没有,添加头文件:#include<QKeyEvent> 。再次构建,问题解决。但出现下面新的问题:
|
- main函数中的QApplication的对象a没有"setMainWidget"方法,百度,从QT4以上就没有setMainWidget这个函数,额,这个还真没找到替换方法,希望有人知道也可以告诉我一声。我第一次用QT~~~~所以将这一句进行了注释。因为qt4以上没有这个函数了:
Porting to Qt 4:
QApplication::setMainWidget() is no longer used. When all an application's windows are closed, the application will exit normally.
意思就是当所有窗口关闭时,程序就算是正常结束了~~
至此,第一课正常运行。具体的代码解析,就不写了,看教程吧。今天就到这里了。
Ubuntu中在QT中配置OpenGL的更多相关文章
- 智能指针类模板(中)——Qt中的智能指针
Qt中的智能指针-QPointer .当其指向的对象被销毁时,它会被自动置空 .析构时不会自动销毁所指向的对象-QSharedPointer .引用计数型智能指针 .可以被自由的拷贝和赋值 .当引用计 ...
- 第38课 Qt中的事件处理(上)
1. GUI程序原理回顾 (1)图形界面应用程序的消息处理模型 (2)思考:操作系统发送的消息如何转变为Qt信号 2. Qt中的事件处理 (1)Qt平台将系统产生的消息转换为Qt事件 ①Qt事件是一个 ...
- Qt中调用PolarSSL库(一)
最近一直在学习SSL相关的知识,也是先了解理论相关的知识,主要是SSL相关的基本概念和连接建立过程,主要是基于PolarSSL开源库进行学习.学习完了之后就希望能给有所运用,就想用Qt写一个简单的程序 ...
- Qt 中的事件处理(一)
1.图形界面应用程序的消息处理模型 特点: 基于操作系统才能运行 GUI应用程序提供的功能必须由用户触发 用户操作界面时操作系统是第一个感知的 系统内核的消息通过事件处理转变成QT的信号 2. Qt中 ...
- Ubuntu下 QT中配置ROS-Kinetic
打开qtcreater自动加载ros环境,通过修改*.desktop文件 gedit ~/.local/share/applications/qtcreator.desktop 将其中Exec=XXX ...
- Windows下OpenCV 3.1.0 在 Qt Creator 4.0.2 (Qt 5.7.0 MinGW) 中的开发环境配置
2017-2-23 Update: 修改并添加了部分细节 最近正在学习OpenCV ,为毕业设计做准备.Windows版本的OpenCV都默认提供对VS的支持,其在VS中的配置比较简单,网上也有大批教 ...
- [OpenCV Qt教程] 在Qt图形界面中显示OpenCV图像的OpenGL Widget(第二部分)
本文译自:http://www.robot-home.it/blog/en/software/tutorial-opencv-qt-opengl-widget-per-visualizzare-imm ...
- [OpenCV Qt教程] 在Qt图形界面中显示OpenCV图像的OpenGL Widget (第一部分)
本文译自:http://www.robot-home.it/blog/en/software/tutorial-opencv-qt-opengl-widget-per-visualizzare-imm ...
- Ubuntu 14.04中Elasticsearch集群配置
Ubuntu 14.04中Elasticsearch集群配置 前言:本文可用于elasticsearch集群搭建参考.细分为elasticsearch.yml配置和系统配置 达到的目的:各台机器配置成 ...
随机推荐
- http文件上传/下载
package unit; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputSt ...
- photoshop特效字体
一.3D效果字 3D效果文字给人以纵伸感.立体感和真实感,是商家常用到的一种宣传文字.虽然Photoshop软件是平面软件,但是在制作3D效果文字时却游刃有余. 3D效果字的制作可分以下三步完成. 输 ...
- HTTP无状态协议
http://baike.baidu.com/view/4551466.htm HTTP协议是无状态协议. 无状态是指协议对于事务处理没有记忆能力.缺少状态意味着如果后续处理需要前面的信息,则它必须重 ...
- 3d Max 2019安装失败怎样卸载3dsmax?错误提示某些产品无法安装装
AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...
- 性能测试工具LoadRunner11-LR之Virtual User Generator 移动app录制
准备条件: 1.安装插件LR_03105_Patch4.EXE,安装完成之后就会有Mobile App(HTTP/HTML),如下截图所示 2.安装热点wifi,160wifi(注:有可能有的热点软件 ...
- ubuntu 16.04安装后不能登入
启动后,选择ubuntu高级选项,选择恢复模式,在恢复模式下 sudo apt-get update sudo apt-get upgrade 另外,可以在此模式下,选择nvidia驱动
- 聊一聊IAR的workspace文件组织
抽空偶尔做个zigbee实验其实也挺好玩的,今天我就来总结一下嵌入式IAR Embedded Workbench这个非常有效的集成开发环境的文件组织. 每一个workspace由一般是由.c文件和一个 ...
- pat1038. Recover the Smallest Number (30)
1038. Recover the Smallest Number (30) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHE ...
- php字符串函数详解
nl2br 功能:化换行符为<br> <?php $str = "cat isn't \n dog"; $result = nl2br($str); echo $ ...
- Golang笔记(一)简洁的语言风格
Golang笔记(一)简洁的语言风格 概述 Golang继承了很多C语言的风格,寡人使用了十几年C语言,切换到Golang时上手很快,并且随着深入的使用,越来越喜欢这门语言.Golang最直观的感受是 ...