LINUX环境下Qt5.9+OpenGL绘图之创建窗口(一)
- QT创建一个新项目,选择默认Widget作为类名,以QWidget作为基类
- 修改pro文件,加入QT += opengl
- 修改.h文件
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QOpenGLWidget>
#include <QOpenGLFunctions>
#include <QOpenGLExtraFunctions>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QOpenGLWidget,protected QOpenGLFunctions
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
protected:
void initializeGL();
void resizeGL(int w, int h);
void paintGL();
void keyPressEvent(QKeyEvent *e);
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
- 修改.cpp文件
#include “widget.h”
#include <QDebug>
#include <QKeyEvent>
Widget::Widget(QWidget *parent)
: QOpenGLWidget(parent)
{
resize(800,600);
setWindowTitle(“A goose’s OpenGL Framework”);
}
Widget::~Widget()
{
}
5.编写.cpp之中的函数
void Widget::initializeGL()
{
this->initializeOpenGLFunctions();
}
void Widget::resizeGL(int w, int h)
{
glViewport(0, 0, w, h);
qDebug()<<“wh”<<w<<h;
}
void Widget::paintGL()
{
glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
}
void Widget::keyPressEvent(QKeyEvent *e)
{
switch(e->key())
{
case Qt::Key_Escape:
close();
break;
}
}

浙公网安备 33010602011771号