У меня есть такой код в mygl.h
#ifndef MYGL_H
#define MYGL_H
#include <QOpenGLWidget>
#include <QOpenGLFunctions>
class MyGL : public QOpenGLWidget, public QOpenGLFunctions
{
Q_OBJECT
public:
MyGL(QWidget* parent = nullptr);
float r, g ,b;
void reInit();
protected:
void initializeGL() override;
void paintGL() override;
void resizeGL(int w, int h) override;
};
#endif // MYGL_H
mygl.cpp
#include "mygl.h"
#include <QPainter>
#include <QPaintEvent>
MyGL::MyGL(QWidget* parent): QOpenGLWidget(parent)
{
r = 0.3f;
}
void MyGL::initializeGL()
{
QOpenGLFunctions *f = QOpenGLContext::currentContext()->functions();
f->glClearColor(r, 0.3f, 0.3f, 1.0f);
}
void MyGL::paintGL()
{
QOpenGLFunctions *f = QOpenGLContext::currentContext()->functions();
f->glClear(GL_COLOR_BUFFER_BIT);
}
void MyGL::resizeGL(int w, int h)
{
}
void MyGL::reInit(){
r=0.5f;
QOpenGLFunctions *f = QOpenGLContext::currentContext()->functions();
f->glClearColor(r, 0.3f, 0.3f, 1.0f);
f->glClear(GL_COLOR_BUFFER_BIT);
}
и код нажатия на кнопку
void MainWindow::on_pushButton_clicked()
{
ui->openGLWidget->reInit();
}
По идее после нажатия на кнопку, цвет виджета должен меняться, но этого не происходит. Несколько часов гуглил, но так и не понял в чём дело. Кто-то может помочь?