QT开发中文网

使用 Qt 继承 QOpenGLFunctions_4_0_Core, 创建一个类,该类在窗口上绘制 Hello Wrld 文本

以下是一个简单的示例代码,它继承了 QOpenGLFunctions_4_0_Core,并在窗口上使用 OpenGL 绘制了 “Hello World” 文本。

#include <QOpenGLFunctions_4_0_Core>
#include <QOpenGLWidget>
#include <QPainter>

class OpenGLWidget : public QOpenGLWidget, protected QOpenGLFunctions_4_0_Core
{
public:
    OpenGLWidget(QWidget* parent = nullptr) : QOpenGLWidget(parent)
    {
    }

protected:
    void initializeGL() override
    {
        // 初始化 OpenGL 函数
        initializeOpenGLFunctions();
    }

    void paintGL() override
    {
        // 清除背景色
        glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
        glClear(GL_COLOR_BUFFER_BIT);

        // 设置绘制颜色和字体
        glColor3f(1.0f, 1.0f, 1.0f);
        QFont font("Arial", 24);

        // 使用 QPainter 在 OpenGL 上下文中绘制文本
        QPainter painter(this);
        painter.beginNativePainting();
        glPushAttrib(GL_ALL_ATTRIB_BITS);
        glMatrixMode(GL_PROJECTION);
        glPushMatrix();
        glLoadIdentity();
        glOrtho(0, width(), height(), 0, -1, 1);
        glMatrixMode(GL_MODELVIEW);
        glPushMatrix();
        glLoadIdentity();
        painter.setFont(font);
        painter.drawText(20, 50, "Hello World");
        glPopMatrix();
        glMatrixMode(GL_PROJECTION);
        glPopMatrix();
        glMatrixMode(GL_MODELVIEW);
        glPopAttrib();
        painter.endNativePainting();
    }
};

在主函数中,创建该类的实例,将其添加到主窗口中。

#include <QApplication>
#include <QMainWindow>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QMainWindow mainWindow;
    OpenGLWidget openGLWidget(&mainWindow);
    mainWindow.setCentralWidget(&openGLWidget);
    mainWindow.show();
    return a.exec();
}

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=1118

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?