前言
本篇将介绍在一个MainWindow上布置一个openGL窗口。并将背景色设置上。
一、新建Qt Widgets Application的程序
内容 | 说明 |
---|---|
文件列表 | |
main.cpp | 主函数 |
MainWindow.h | 主窗口: class MainWindow |
abxopenglwidget.h | OpenGL-widget: class AXBOpenGLWidget |
二、新建abxopenglwidget类
- 菜单:文件-新建文件或项目
#include <QOpenGLWidget>
#include <QOpenGLFunctions_3_3_Core>
class AXBOpenGLWidget:public QOpenGLWidget,QOpenGLFunctions_3_3_Core
{
public:
AXBOpenGLWidget(QWidget *parent= nullptr);
protected:
virtual void initializeGL();
virtual void resizeGL(int w, int h);
virtual void paintGL();
};
AXBOpenGLWidget::AXBOpenGLWidget(QWidget *parent):
QOpenGLWidget(parent)
{
}
void AXBOpenGLWidget::initializeGL()
{
initializeOpenGLFunctions();
}
void AXBOpenGLWidget::resizeGL(int w, int h)
{
}
void AXBOpenGLWidget::paintGL()
{
glClearColor(1.f,0.0f,0.0f,1.0f);
glClear(GL_COLOR_BUFFER_BIT);
}
这个类:
内容 | 说明 |
---|---|
QOpenGLWidget | openGL显示窗口 |
QOpenGLFunctions_3_3_Core | openGL函数 3.3版本 |
virtual void initializeGL(); virtual void resizeGL(int w, int h); virtual void paintGL(); | openGL窗口必须实现三个函数 |
initializeOpenGLFunctions(); | 类似于GLAD 给所有gl函数指针初始化 |
glClearColor(1.f,0.0f,0.0f,1.0f); | 设置上下文 |
glClear | 应用上下文 |
三、mainwindow.ui设置
- 点击设置菜单 :文件 查看 设置 帮助
- 设置UI styleSheet
QWidget
{
background-color:rgb(100, 100, 100);
font:10pt "幼圆"
}
QMenuBar
{
background-color:rgb(200, 200, 200);
color:rgb(50,50,50);
}
- 插入OpenGLWidget 并抬升类为 AXBOpenGLWidget
插入OpenGL Widget | |
将QOpenGLWidget 类提升为 AXBOpenGLWidget | |
在MainWindow中将centralWidget替换为openGL窗口 |