Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用QGLWidget编译Qt 我在C++中编写了玛雅插件。然而,每当我想使用QGLWidget时,我都会收到大量vtable错误: Undefined symbols for architecture x86_64: "QGLWidget::paintEvent(QPaintEvent*)", referenced from: vtable for GLWidget in myOpenGLWindowClass.o "QGLWidget::qt_metacall(QMetaObject::Call, int, void**)", referenced from: vtable for GLWidget in myOpenGLWindowClass.o "QGLWidget::qt_metacast(char const*)", referenced from: vtable for GLWidget in myOpenGLWindowClass.o "QGLWidget::resizeEvent(QResizeEvent*)", referenced from: vtable for GLWidget in myOpenGLWindowClass.o "QGLWidget::paintOverlayGL()", referenced from: vtable for GLWidget in myOpenGLWindowClass.o "QGLWidget::resizeOverlayGL(int, int)", referenced from: vtable for GLWidget in myOpenGLWindowClass.o "QGLWidget::updateOverlayGL()", referenced from: vtable for GLWidget in myOpenGLWindowClass. ..._C++_Qt_Maya_Vtable_Qglwidget - Fatal编程技术网

无法使用QGLWidget编译Qt 我在C++中编写了玛雅插件。然而,每当我想使用QGLWidget时,我都会收到大量vtable错误: Undefined symbols for architecture x86_64: "QGLWidget::paintEvent(QPaintEvent*)", referenced from: vtable for GLWidget in myOpenGLWindowClass.o "QGLWidget::qt_metacall(QMetaObject::Call, int, void**)", referenced from: vtable for GLWidget in myOpenGLWindowClass.o "QGLWidget::qt_metacast(char const*)", referenced from: vtable for GLWidget in myOpenGLWindowClass.o "QGLWidget::resizeEvent(QResizeEvent*)", referenced from: vtable for GLWidget in myOpenGLWindowClass.o "QGLWidget::paintOverlayGL()", referenced from: vtable for GLWidget in myOpenGLWindowClass.o "QGLWidget::resizeOverlayGL(int, int)", referenced from: vtable for GLWidget in myOpenGLWindowClass.o "QGLWidget::updateOverlayGL()", referenced from: vtable for GLWidget in myOpenGLWindowClass. ...

无法使用QGLWidget编译Qt 我在C++中编写了玛雅插件。然而,每当我想使用QGLWidget时,我都会收到大量vtable错误: Undefined symbols for architecture x86_64: "QGLWidget::paintEvent(QPaintEvent*)", referenced from: vtable for GLWidget in myOpenGLWindowClass.o "QGLWidget::qt_metacall(QMetaObject::Call, int, void**)", referenced from: vtable for GLWidget in myOpenGLWindowClass.o "QGLWidget::qt_metacast(char const*)", referenced from: vtable for GLWidget in myOpenGLWindowClass.o "QGLWidget::resizeEvent(QResizeEvent*)", referenced from: vtable for GLWidget in myOpenGLWindowClass.o "QGLWidget::paintOverlayGL()", referenced from: vtable for GLWidget in myOpenGLWindowClass.o "QGLWidget::resizeOverlayGL(int, int)", referenced from: vtable for GLWidget in myOpenGLWindowClass.o "QGLWidget::updateOverlayGL()", referenced from: vtable for GLWidget in myOpenGLWindowClass. ...,c++,qt,maya,vtable,qglwidget,C++,Qt,Maya,Vtable,Qglwidget,代码如下: #include <QtGui/QApplication> #include <QGLWidget> class GLWidget :public QGLWidget { public: GLWidget(QWidget *parent = 0); virtual ~GLWidget(){}; protected: virtual void initializeGL(); virtual void resizeGL( int

代码如下:

#include <QtGui/QApplication>
#include <QGLWidget>

class GLWidget :public QGLWidget
{

public:
    GLWidget(QWidget *parent = 0);
    virtual ~GLWidget(){};
protected:
    virtual void initializeGL();
    virtual void resizeGL( int width, int height );
    virtual void paintGL();

};

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

}

void GLWidget::initializeGL() {
    glDisable(GL_TEXTURE_2D);
    glDisable(GL_DEPTH_TEST);
    glDisable(GL_COLOR_MATERIAL);
    glEnable(GL_BLEND);
    glEnable(GL_POLYGON_SMOOTH);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    glClearColor(0, 0, 0, 0);
}

void GLWidget::resizeGL(int w, int h)
{
    glViewport(0, 0, w, h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
}

void GLWidget::paintGL()
{
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(1,0,0);
    glBegin(GL_POLYGON);
    glVertex2f(0,0);
    glVertex2f(100,500);
    glVertex2f(500,100);
    glEnd();
}
#包括
#包括
类GLWidget:publicqglwidget
{
公众:
GLWidget(QWidget*parent=0);
虚拟~GLWidget(){};
受保护的:
虚空初始化egl();
虚拟空隙大小(整型宽度、整型高度);
虚空paintGL();
};
GLWidget::GLWidget(QWidget*父项):QGLWidget(父项)
{
}
void GLWidget::initializeGL(){
glDisable(GL_纹理_2D);
glDisable(GLU深度测试);
glDisable(GL_颜色_材质);
glEnable(GL_混合物);
glEnable(GL_多边形_光滑);
glBlendFunc(GL_SRC_ALPHA,GL_ONE_减去GL_SRC_ALPHA);
glClearColor(0,0,0,0);
}
void GLWidget::resizeGL(int w,int h)
{
glViewport(0,0,w,h);
glMatrixMode(GL_投影);
glLoadIdentity();
glMatrixMode(GLU模型视图);
glLoadIdentity();
}
void GLWidget::paintGL()
{
glClear(GLU颜色缓冲位);
gl3f(1,0,0);
glBegin(GL_多边形);
glVertex2f(0,0);
glVertex2f(100500);
glVertex2f(500100);
格伦德();
}

是否需要在编译中添加库或其他错误?

我需要在编译中添加QtOpenGL框架。

我需要在编译中添加QtOpenGL框架。

请添加您尝试编译的方式(哪个编译器,哪个标志,…)多亏了你的评论,我在汇编中发现了一个缺失的框架(发布了答案)。谢谢请添加您试图编译的方式(哪个编译器,哪个标志,…)感谢您的评论,我在编译中发现了一个缺少的框架(发布了答案)。谢谢如果您切换到使用较新的QOpenGLWidget,它也会工作,因为这只是widgets模块的一部分。如果您切换到使用较新的QOpenGLWidget,它也会工作,因为这只是widgets模块的一部分。