Qt5.9.4中利用QOpenGLWidget类进行opengl绘图

首先打开Qt Creator,然后点击菜单 ,文件->新建文件和项目,如图所示:


左边选择Application,右边选择Qt Widgets Application,点击Choose...,


项目名称为myOpenGLShow,接着下一步,一直默认,到Details,如下:


点击取消选中创建界面(G)。

然后下一步,知道完成,程序显示的为mainwindow.cpp文件:


接着是利用QOpenGLWidget类,为了显示自定义的opengl绘制函数,我们新建一个继承QOpenGLWidget类的自定义类。

选中项目文件,右键->添加新文件,如图所示:


选择C++类,choose...,如图所示:


类的名称为myopenGL,同时继承Qwidget(组件)类。点击下一步直到完成,此时工程目录下添加了myopenGL.cpp,myopenGL.h文件。


接着在myopengl.h中进行操作,首先添加四个头文件:

#include <GL/gl.h>
#include <GL/glu.h>
#include<QOpenGLWidget>
#include"QOpenGLFunctions"
然后将myopenGl的继承类改为public QOpenGlWidget,protected QOpenGLFuctions(在.h和.cpp文件中都需要修改)同时重载QopenGLWidget类中的
initializeGL(),resizeGL(),paintGL()三个函数。如图所示:


然后是在myopengl.cpp中进行操作,首先写重载的三个函数:

void myopenGL::initializeGL()
{
    initializeOpenGLFunctions();
    glClearColor(0,0,0,1);
    glEnable(GL_DEPTH_TEST);
    glEnable(GL_LIGHT0);
    glEnable(GL_LIGHTING);
    glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);
    glEnable(GL_COLOR_MATERIAL);
   // cout<<glGetString(GL_VERSION)<<endl;
}
 
void myopenGL::paintGL()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
        glBegin(GL_TRIANGLES);
        glColor3f(1.0, 0.0, 0.0);
        glVertex3f(-5, -5, 0);
        glColor3f(0.0, 1.0, 0.0);
        glVertex3f( 5, -5, 0);
        glColor3f(0.0, 0.0, 1.0);
        glVertex3f( 0.0,  5, 0);
    glEnd();
}
void myopenGL::resizeGL(int width, int height)
{
    glViewport(0,0,width,height);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(-width/2,width/2,-height/2,height/2,-1,1);
    glMatrixMode(GL_MODELVIEW);
}
 
 
 

所要绘制的东西在paintGL函数中,使用glBegin()和glEnd()固定模式,代码的具体含义读者可以查找网络上其他的资源,此处重点是讲解如何写自己的openGL类来实现目标的绘制。

接着是在mainwindow.h文件中进行操作,添加头文件:

#include"myopengl.h"

同时添加一个myopenGl成员对象,如下所示:


然后是在mainwindow.cpp文件中进行操作,在其构造函数中添加如下代码:


代码含义,如注释所示。

运行:


则可以看到paintGL中绘制的对象显示出来,此处我们定义了一个新类myopenGL,这个类就是我们自己的资源了,在其他工程中我们,只需要添加myopenGL.h,myopenGL到工程中,就可以用自定义的openGL类进行绘图了。

下面介绍常见的错误:


解决办法:在工程pro中添加:

QT +=core gui opengl
LIBS+=-lopengl32 -lglu32

申明程序调用openGL以及对应的库。

错误二:如果程序运行的结果为白框,不为黑框。

解决办法:可在main.cpp中,main函数第一行添加如下代码:

 QCoreApplication::setAttribute(Qt::AA_UseDesktopOpenGL);

设置调用的OpenGL的版本。

到这里相信读者已经掌握了如何用自定义的openGL类来绘图了,如果有任何疑问可以下载源码仔细研究。

Qt是一个跨平台的C++应用程序开发框架,版本5.9.4提供了丰富的GUI工具和库,适用于创建桌面应用、移动应用以及服务器端软件。下面是Qt 5.9.4下载和安装的基本步骤: 1. **官网下载**: 访问Qt的官方网站 <https://www.qt.io/download> ,选择"Get started for free",然后选择"Individual & Open source"。如果你是个人开发者,可以免费获取Community Edition。在下载页面,找到"Desktop Qt 5.9.4 MinGW 64-bit"或"Desktop Qt 5.9.4 MSVC 64-bit"等适合你的平台版本下载。 2. **解压安装文件**: 下载完成后,双击安装包,通常会自解压并打开安装向导。 3. **运行安装向导**: 向导开始后,你可以选择"Run the installer",按照提示一步步进行安装。确保阅读许可协议,并根据需要配置选项,如安装目录、组件选择(只安装开发工具、只安装运行时环境等)。 4. **添加到系统路径**: 安装完成后,需要将Qt的bin目录(例如C:\Qt\5.9.4\msvc2017_64\bin)添加到系统的PATH环境变量,以便在命令行直接调用Qt工具。 5. **验证安装**: 在安装目录下打开Qt Creator(如果安装了)或者在命令行输入`qmake --version` 和 `qmake -v` 来检查Qt是否已成功安装。 6. **设置开发环境**: 在你的开发环境(如Visual Studio, Code::Blocks等),配置Qt作为构建系统,确保能够识别和使用新安装的库和头文件。 相关问题-- 1. Qt 5.9.4支持哪些主要的操作系统? 2. 如何在Qt Creator创建一个新的Qt项目? 3. 如何在CMakeLists.txt文件链接Qt库?
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CHPCWWHSU

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值