Qt入門 OpenGL應用(二)

應用來源

打開Qt Creater在歡迎界面尋找示例,搜索OpenGL,可以看見很多示例程序,打開慢慢看!
這裏寫圖片描述

QGLxx VS QOpenGLxx

或許你在看見本篇博客之前,在網上搜索過類似的文章,有些裏面使用的是QGLWidget作爲自己寫的子類的基類,有些裏面使用的是QOpenGLWidget作爲自己寫的子類的基類。

參考鏈接

一句話來說,在Qt4中,QtOpenGL的各個接口進一步封裝爲了QGLxxx,在Qt5中,QtOpenGL的各個接口封裝爲了QOpenGLxxx

一般情況下都使用QOpenGLWidget作爲窗口的基類,然後繼承這些基類的接口:
- initializeGL
- resizeGL
- paintGL

Qmainwindow的佈局

自己寫的稍微簡單的Qt應用是沒有使用ui文件的,是自己做QGridLayout

比如下圖的Qt應用中:
這裏寫圖片描述
分爲兩個大的部分Qmenu和Qwidget,見兩個紅框:

- Qmenu
- Qwidget

在Qwidget中,又可以分爲八個部分,見綠框包括的八個組件:

- Qlabel
- Qlabel
- QPushButton
- ZWidget
- ZWidget
- ZWidget
- QPushButton
- QSlider

ZWidget是渲染OpenGL的窗口,是本次討論的重點。

ZWidget

ZWidget類繼承自QOpenGLwidget類,和QOpenGLFunctions類。

class ZWidget :public QOpenGLWidget, protected QOpenGLFunctions
{
    Q_OBJECT
    ...
}

QOpenGLFunctions類中封裝了各樣的OpenGL接口,QOpenGLWidget類中有三個重要的虛函數:

virtual void initializeGL();
virtual void resizeGL(int w, int h);
virtual void paintGL();

我們只需要在自己的Zwidget類中重載這三個重要的虛函數,就可以達到繪製OpenGL的目的。

發佈了137 篇原創文章 · 獲贊 22 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章