使用C++ QT绘制OpenGL图形需要进行以下步骤:
安装Qt和OpenGL库 首先,需要安装Qt和OpenGL库。在Qt Creator中创建新项目时,选择OpenGL Widget项目类型即可。
在.h文件中添加必要的头文件 包含QtOpenGL和GLU库。
重写QGLWidget类的函数 重写initializeGL()、paintGL()、resizeGL()三个函数,在这里面实现相应功能。
使用OpenGL绘制图形
在paintGL()函数中使用OpenGL的相关函数来绘制图形,例如glBegin(GL_TRIANGLES)等函数可以画三角形。
下面是一个简单的例子:
#include <QtGui/QApplication>
#include <QtGui/QHBoxLayout>
#include <QtGui/QVBoxLayout>
#include <QtGui/QLabel>
#include <QtCore/QTimer>
#include <qgl.h> // 引入 QGLWidget 头文件
class GLWidget : public QGLWidget
{
public:
explicit GLWidget(QWidget *parent = nullptr)
: QGLWidget(parent), m_rotate(0.f)
{
QTimer* timer = new QTimer(this);
connect(timer, &QTimer::timeout, this, [this]() { update(); });
timer->start(1000 / 60);
}
protected:
void initializeGL()
{
glEnable(GL_DEPTH_TEST);
glShadeModel(GL_FLAT);
glEnable(GL_CULL_FACE);
}
void paintGL()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(-1.5f, 0.f, -6.f);
glRotatef(m_rotate, 0.0f, 1.0f, 0.0f);
glBegin(GL_TRIANGLES);
glColor3f(1.f, 0.f, 0.f); glVertex3f(0.f, 1.f, 0.f);
glColor3f(0.f, 1.f, 0.f); glVertex3f(-1.f,-1.f, 0.f);
glColor3f(0.f, 0.f, 1.f); glVertex3f(1.5f,-1.f,-2.4f);
glEnd();
m_rotate += .5;
}
void resizeGL(int width,int height)
{
glViewport(0, 0,(GLint)width,(GLint)height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
GLfloat x = GLfloat(width) / height;
glFrustum(-x,x,-1.0,+1.5,+5.6,+10.0);
}
private:
float m_rotate;
};
int main(int argc,char** argv)
{
QApplication app(argc,argv);
QWidget* widget = new QWidget;
QVBoxLayout* layout = new QVBoxLayout(widget);
layout->addWidget(new QLabel("OpenGL Widget"));
GLWidget* openGLWiget = new GLWidget(widget);
QHBoxLayout* hLayout = new QHBoxLayout;
hLayout->addWidget(openGLWiget);
layout->addLayout(hLayout);
widget->show();
return app.exec();
}
以上是一个简单的C++ QT使用OPENGL绘图的例子,仅供参考。




