关于QT5.10+opengl的使用

本人最近在用qt5.10和opengl结合,看了一些博主写的文章,但是在编写程序时还是遇到了各种各样的问题,想来总结下。
现在QT5之后有两种方式来结合opengl,最新的可以看看qt官方的opengl window的例子,本人暂时没有用到,还是用旧的方式。现在开始介绍吧!~~~

问题总结:
1.出现undefined reference to 。。。。的问题
关于QT5.10+opengl的使用


2.运行后界面全黑,不显示你所画的内容
3.想知道解决方法吗?请看到最后~~~


首先介绍一下我的简单工程,主要是实现在QT下显示正方形和三角形,工程如下:

关于QT5.10+opengl的使用
1.Openglwindow.h的内容

关于QT5.10+opengl的使用
红色箭头的地方如果改成QOpenGLWidget,会出现runtime error的错误,这个问题我还没有解决,如果有哪位大神知道,欢迎指导下,我用QOpenGLWindow是可以运行的(已解决:把main.cpp中的QGuiApplication改成QApplication就行了)。

2.Openglwindow.cpp的内容,主要就是覆写下面的3个方法。
关于QT5.10+opengl的使用
关于QT5.10+opengl的使用
关于QT5.10+opengl的使用
3.main.cpp内容

关于QT5.10+opengl的使用
4.运行结果

关于QT5.10+opengl的使用
大功告成,各位只要修改paintGL方法就能画出自己想要的图形啦~~~~是不是很方便呢?

现在来解决下前面提到的两个问题~!!!!!!!!!!!!!!!!!!!!!
第一个问题只要在工程.pro上添加以下内容就好了:
QT +=core gui opengl

LIBS+=-lopengl32 -lglu32
第二个问题的解决方法是:

在main.cpp中,main函数第一行添加如下代码:


QCoreApplication::setAttribute(Qt::AA_UseDesktopOpenGL);

希望大家都能少走弯路~~~~~
另外,如果各位想使用动态的图绘制,请加定时器QTimer,并在信号槽中添加update(),该方法是在qt5之后取代了updateGL(),定时调用覆写的paintGL()方法。