关于 QOpenGLWidget 的错误
Posted
技术标签:
【中文标题】关于 QOpenGLWidget 的错误【英文标题】:errors about QOpenGLWidget 【发布时间】:2016-05-07 03:10:41 【问题描述】:How do I render a triangle in QOpenGLWidget? 当我做为链接时,会发生错误 errors like these mywidget.h
#ifndef MYWIDGET_H
#define MYWIDGET_H
#include <QWidget>
namespace Ui
class myWidget;
class myWidget : public QWidget
Q_OBJECT
public:
explicit myWidget(QWidget *parent = 0);
~myWidget();
private:
Ui::myWidget *ui;
;
#endif // MYWIDGET_H
mywidget.cpp
#include "mywidget.h"
#include "ui_mywidget.h"
myWidget::myWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::myWidget)
ui->setupUi(this);
myWidget::~myWidget()
delete ui;
oglwidget.h
#ifndef OGLWIDGET_H
#define OGLWIDGET_H
#include <QWidget>
#include <QOpenGLWidget>
#include <GL/glu.h>
#include <GL/gl.h>
class OGLWidget : public QOpenGLWidget
public:
OGLWidget(QWidget *parent=0);
~OGLWidget();
protected:
void initializeGL();
void resizeGL(int w, int h);
void paintGL();
;
#endif // OGLWIDGET_H
oglwidget.cpp
#include "oglwidget.h"
OGLWidget::OGLWidget(QWidget *parent)
:QOpenGLWidget(parent)
OGLWidget::~OGLWidget()
void OGLWidget::initializeGL()
glClearColor(0,0,0,1);
glEnable(GL_DEPTH_TEST);
glEnable(GL_LIGHT0);
glEnable(GL_LIGHTING);
glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);
glEnable(GL_COLOR_MATERIAL);
void OGLWidget::paintGL()
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBegin(GL_TRIANGLES);
glColor3f(1.0, 0.0, 0.0);
glVertex3f(-0.5, -0.5, 0);
glColor3f(0.0, 1.0, 0.0);
glVertex3f( 0.5, -0.5, 0);
glColor3f(0.0, 0.0, 1.0);
glVertex3f( 0.0, 0.5, 0);
glEnd();
void OGLWidget::resizeGL(int w, int h)
glViewport(0,0,w,h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45, (float)w/h, 0.01, 100.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0,0,5,0,0,0,0,1,0);
main.cpp
#include "mywidget.h"
#include <QApplication>
int main(int argc, char *argv[])
QApplication a(argc, argv);
myWidget w;
w.show();
return a.exec();
form 为什么会发生这些错误?我错过了一些包含文件吗? Qt 5.5版
【问题讨论】:
不要将错误文本作为图片发布。 【参考方案1】:终于找到了解决办法 最后两行应添加到 .pro 文件中
HEADERS = glwidget.h \
mainwindow.h
SOURCES = glwidget.cpp \
main.cpp \
mainwindow.cpp
QT += opengl
LIBS += -lopengl32
LIBS += -lglu32
然后可能会显示 qtcreator_process_stub 终端窗口,我去项目->运行->取消选中“在终端中运行” 是的,这行得通!我的操作系统是 Win10 64bit 和 Qt5.6 with mingw
【讨论】:
以上是关于关于 QOpenGLWidget 的错误的主要内容,如果未能解决你的问题,请参考以下文章