在之前的文章中讲到了OpenGL鼠标拾取操作的例子,工作中需要在Qt中实现,下面的程序演示了QT中opengl的拾取例子。
本例子在Qt5.12和Qt Creator4.8.0上测试,使用的是QOpenGLWidget类,在窗口的正中央有红绿两个三角形组成一个正方形,分别点击不同的三角形部分进行对象拾取。
相关代码如下:
opengl_widget.h
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 27 28 29 30 31 32 33 34 35 36 37 38 |
#ifdef
_MSC_VER #pragma once #endif #ifndef _OPENGL_WIDGET_H_ #define _OPENGL_WIDGET_H_ #include <vector> #include <QtWidgets/qopenglwidget.h> class OpenGLWidget : public QOpenGLWidget { Q_OBJECT public : explicit OpenGLWidget(QWidget *parent = nullptr); virtual ~OpenGLWidget(); protected : virtual void initializeGL() override; virtual void paintGL() override; virtual void resizeGL( int w, int h) override; virtual void mousePressEvent(QMouseEvent *ev) override; virtual void mouseMoveEvent(QMouseEvent *ev) override; virtual void mouseReleaseEvent(QMouseEvent *ev) override; private : void |