Can't compile custom class derived from QGLWidget
I'm trying to derive a class from QGLWidget based on the example code that ships with Qt. I can't get it to work though, and I'm not sure why.
Here's the code.
Code:
#ifndef GLWIDGET_H
#define GLWIDGET_H
#include <QtOpenGL/QGLWidget>
#include <QWidget>
{
Q_OBJECT
public:
protected:
private:
};
#endif
Code:
#include <QtGui>
#include "glwidget.h"
{
setFixedSize(640, 480);
m_pQImage = pQImage;
}
{
//QPainter painter;
//painter.begin(this);
//painter.drawImage( 0, 0, m_pQImage );
//painter.end();
}
Compile errors:
Code:
glwidget.cpp:(.text+0x7f): undefined reference to `QGLWidget::~QGLWidget()'
glwidget.cpp:(.text+0xff): undefined reference to `QGLWidget::~QGLWidget()'
moc_glwidget.
cpp:(.
text+0x15
): undefined reference to `
QGLWidget::qt_metacall(QMetaObject::Call,
int,
void**)'moc_glwidget.cpp:(.text+0x7d): undefined reference to `QGLWidget::qt_metacast(char const*)'
moc_glwidget.
cpp:(.
text._ZN8GLWidgetD0Ev
[GLWidget
::~GLWidget
()]+0x2b
): undefined reference to `
QGLWidget::~
QGLWidget()'moc_glwidget.cpp:(.text._ZN8GLWidgetD1Ev[GLWidget::~GLWidget()]+0x25): undefined reference to `QGLWidget::~QGLWidget()'
moc_glwidget.
o:(.
rodata+0x0
): undefined reference to `
QGLWidget::staticMetaObject'moc_glwidget.o:(.rodata._ZTV8GLWidget[vtable for GLWidget]+0x1c): undefined reference to `QGLWidget::event(QEvent*)'
moc_glwidget.
o:(.
rodata._ZTV8GLWidget
[vtable
for GLWidget
]+0x4c
): undefined reference to `
QGLWidget::paintEngine() const'moc_glwidget.o:(.rodata._ZTV8GLWidget[vtable for GLWidget]+0x84): undefined reference to `QGLWidget::resizeEvent(QResizeEvent*)'
moc_glwidget.
o:(.
rodata._ZTV8GLWidget
[vtable
for GLWidget
]+0xe0
): undefined reference to `
QGLWidget::updateGL()'moc_glwidget.o:(.rodata._ZTV8GLWidget[vtable for GLWidget]+0xe4): undefined reference to `QGLWidget::updateOverlayGL()'
moc_glwidget.
o:(.
rodata._ZTV8GLWidget
[vtable
for GLWidget
]+0xe8
): undefined reference to `
QGLWidget::initializeGL()'moc_glwidget.o:(.rodata._ZTV8GLWidget[vtable for GLWidget]+0xec): undefined reference to `QGLWidget::resizeGL(int, int)'
moc_glwidget.
o:(.
rodata._ZTV8GLWidget
[vtable
for GLWidget
]+0xf0
): undefined reference to `
QGLWidget::paintGL()'moc_glwidget.o:(.rodata._ZTV8GLWidget[vtable for GLWidget]+0xf4): undefined reference to `QGLWidget::initializeOverlayGL()'
moc_glwidget.
o:(.
rodata._ZTV8GLWidget
[vtable
for GLWidget
]+0xf8
): undefined reference to `
QGLWidget::resizeOverlayGL(int,
int)'moc_glwidget.o:(.rodata._ZTV8GLWidget[vtable for GLWidget]+0xfc): undefined reference to `QGLWidget::paintOverlayGL()'
moc_glwidget.
o:(.
rodata._ZTV8GLWidget
[vtable
for GLWidget
]+0x100
): undefined reference to `
QGLWidget::glInit()'moc_glwidget.o:(.rodata._ZTV8GLWidget[vtable for GLWidget]+0x104): undefined reference to `QGLWidget::glDraw()'
moc_glwidget.
o:(.
rodata._ZTV8GLWidget
[vtable
for GLWidget
]+0x11c
): undefined reference to `non
-virtual thunk to
QGLWidget::paintEngine() const'moc_glwidget.o:(.rodata._ZTI8GLWidget[typeinfo for GLWidget]+0x8): undefined reference to `typeinfo for QGLWidget'
*** Exited with status: 2 ***
Do I need to specify any libraries to link against?
Re: Can't compile custom class derived from QGLWidget
Try adding "QT += opengl" to your .pro file.