使用paintEvent()对窗口进行OpenGL2D绘图

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq78442761/article/details/87717560

目录

 

概念

演示


 

概念

最近在看Qt官方文档,发现QOpenGLWidget中可以使用paintEvent进行OpenGL的2D绘图,不需要任何OpenGL的知识,只需要简单的Qt的知识即可,对此自己写了一个小栗子记录下。

演示

程序运行截图如下:

程序结构如下:

源码如下:

glwidget.h

#ifndef GLWIDGET_H
#define GLWIDGET_H

#include <QOpenGLWidget>

class GLWidget : public QOpenGLWidget
{
    Q_OBJECT
public:
    GLWidget(QWidget *parent = Q_NULLPTR);

protected:
    void paintEvent(QPaintEvent *e) Q_DECL_OVERRIDE;
};

#endif // GLWIDGET_H

glwidget.cpp

#include "glwidget.h"
#include <QPaintEvent>
#include <QPainter>
#include <QColor>

GLWidget::GLWidget(QWidget *parent)
    : QOpenGLWidget(parent)
{

}

void GLWidget::paintEvent(QPaintEvent *e)
{
    QPainter painter;
    painter.begin(this);
    painter.setRenderHint(QPainter::Antialiasing);
    painter.fillRect(e->rect(), QBrush(QColor(64, 55, 190)));

    painter.setPen(QPen(QColor(Qt::white)));
    QFont font;
    font.setPixelSize(100);
    painter.setFont(font);
    painter.drawText(QRect(100, 100, 700, 200), Qt::AlignCenter, "CSDN IT1995");
    painter.end();
}

main.cpp

#include <QApplication>
#include "glwidget.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    GLWidget w;
    w.show();

    return a.exec();
}

猜你喜欢

转载自blog.csdn.net/qq78442761/article/details/87717560