Qt6.3.1中使用QOpenGLWidget
一、概述
案例:使用Qt来实现QOpenGLWidget简单框架,此处主要是为后面视频播放做准备的
实现步骤:
1.将OpenGLWidget组件拖入Qt的UI设计页面
2.右键QOpenGLWidget组件--->提升为
3.在代码中创建一个XVideoWidget类,此类的类名要和“提升为”中的类名一致
4.第3步中新建的类需要继承QOpenGLWidget和QOpenGLFunctions
#include <QtOpenGLWidgets/QtOpenGLWidgets> #include <QOpenGLFunctions> class XVideoWidget:public QOpenGLWidget,protected QOpenGLFunctions
5.重写paintGL、initializeGL、resizeGL(int width,int height)
//刷新显示 void paintGL() override; //初始化GL void initializeGL() override; //窗口尺寸变化 void resizeGL(int width,int height) override;
6.在XPlayer.pro文件中添加QOpenGLWidget组件的使用权限
QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets multimedia openglwidgets
二、代码示例
1.XVideoWidget.h
#ifndef XVIDEOWIDGET_H #define XVIDEOWIDGET_H #include <QObject> #include <QtOpenGLWidgets/QtOpenGLWidgets> #include <QOpenGLFunctions> class XVideoWidget:public QOpenGLWidget,protected QOpenGLFunctions { Q_OBJECT public: XVideoWidget(QWidget *parent = nullptr); ~XVideoWidget(); protected: //刷新显示 void paintGL() override; //初始化GL void initializeGL() override; //窗口尺寸变化 void resizeGL(int width,int height) override; }; #endif // XVIDEOWIDGET_H
2.XVideoWidget.cpp
#include "XVideoWidget.h" #include <QDebug> XVideoWidget::XVideoWidget(QWidget *parent):QOpenGLWidget(parent) { } //刷新显示 void XVideoWidget::paintGL(){ qDebug()<<"刷新显示GL"; } //初始化GL void XVideoWidget::initializeGL(){ qDebug()<<"初始化GL"; } //窗口尺寸变化 void XVideoWidget::resizeGL(int width,int height){ qDebug()<<"窗口尺寸变化GL"; } XVideoWidget::~XVideoWidget(){ }
三、演示图片