系列教程索引:QOpenGL开发入门教程索引
上一篇:QopenGL开发入门教程00:开发库介绍
Qt提供了开发时需要的一切,你只需要会熟练使用Qt提供的API就可以了。
本文显示一个空白窗口界面(不是说窗口是白的,而是窗口中不显示任何内容),可以在窗口和全屏模式下切换,按ESC退出,并以此窗口作为后续开发的模板
空界面
new class
这个就是标准的C++
类的使用方法
新建一个Qt Widget工程,会自动生成下列文件
1 2 3 4 5
| main.cpp mainwindow.cpp mainwindow.h mainwindow.ui *.pro
|
新建一个类GLWidget
头文件
1 2 3 4 5 6 7 8 9 10 11
| class GLWidget : public QOpenGLWidget,public QOpenGLFunctions { public: GLWidget(QWidget *parent=nullptr); ~GLWidget();
protected: void initializeGL(); void resizeGL(int w,int h); void paintGL(); };
|
实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| GLWidget::GLWidget(QWidget *parent) :QOpenGLWidget(parent) {}
GLWidget::~GLWidget() {}
void GLWidget::initializeGL() { initializeOpenGLFunctions(); glClearColor(0.0f,0.0f,0.0f,1.0f); glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT|GL_RGBA|GL_ALPHA_BITS); glEnable(GL_DEPTH_TEST); }
void GLWidget::resizeGL(int w, int h) { glViewport(0,0,w,qMax(h,1)); update(); }
void GLWidget::paintGL() { glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT|GL_RGBA|GL_ALPHA_BITS); }
|
在mainwindow.cpp构造函数中添加
1 2
| glWidget = new GLWidget(this->centralWidget()); glWidget->resize(this->centralWidget()->size());
|
效果

prompt
GLWidget类的代码和new方式的一样
Qt UI设计器中提供了类提升的功能,在设计器中的窗口中添加Qt提供的opengl窗口,并将其提升为GLWidget类

效果为

inheirt
继承也是标准C++类的功能,还是之前的GLWidget类,只不过不需要*.ui文件。
在main.cpp中直接调用
1 2 3 4
| QApplication a(argc, argv); GLWindow w; w.show(); return a.exec();
|
结果为:

源代码地址:OpenGL_Beginner在QOpenGL下的1.blank
我在本系列后续的文章中使用的是inherit方法,代码文件少。
下一篇:QOpenGL开发入门教程02:输出版本号