Фон QGLWidget не изменится ни в initializeGL (), ни в paintGL () - PullRequest
0 голосов
/ 15 апреля 2020

Так что у меня эта программа должна использовать QGLWidget, я все еще относительно новичок в использовании OpenGL и QT, поэтому я начал следовать этому учебнику . Однако фон моего QGLWidget не изменится, что бы я ни делал (я использую Ubuntu, а не windows). Нужно ли создавать класс для него внутри mainWindow. cpp или этого достаточно для того, чтобы он работал?

Это то, что отображается при запуске программы. Виджет QGLWid справа полностью черный, если он отображается желтым цветом с красным треугольником mainwindow

Вот продвинутый виджет QGLWidget, который связан с классом drawingArea promoted widget

Наконец, вот код из области рисования. Он прекрасно компилируется, и я не вижу ничего плохого в логике c, отсюда мое замешательство.

drawingarea.h

#ifndef DRAWINGAREA_H
#define DRAWINGAREA_H

#include <QGLWidget>
#include <QOpenGLWindow>
#include <QSurfaceFormat>
#include <QOpenGLFunctions>
#include <QtOpenGL>
#include <GL/glu.h>
class drawingArea : public QGLWidget
{
public:
    drawingArea(QWidget *parent=0);

    virtual void initializeGL();
    virtual void resizeGL(int w, int h);
    virtual void paintGL();
    void paintEvent(QPaintEvent *event);

private:
    QOpenGLContext *context;
    QOpenGLFunctions *openGLFunctions;
};

#endif // DRAWINGAREA_H

drawingarea. cpp

#include "drawingarea.h"

drawingArea::drawingArea(QWidget *parent) : QGLWidget(parent)
{

}

void drawingArea::initializeGL()
{
    glClearColor(1,1,0,1);
}

void drawingArea::resizeGL(int w, int h)
{

}

void drawingArea::paintGL()
{
    glClear(GL_COLOR_BUFFER_BIT);

   glColor3f(1,0,0);
   glBegin(GL_TRIANGLES);
   glVertex3f(-0.5,-0.5,0);
   glVertex3f(0.5,-0.5,0);
   glVertex3f(0,0.5,0);
   glEnd();
}    

void drawingArea::paintEvent(QPaintEvent *event)
{

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...