Results 1 to 2 of 2

Thread: Can't compile custom class derived from QGLWidget

  1. #1
    Join Date
    Jun 2007
    Posts
    10
    Thanks
    3

    Default 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.
    Qt Code:
    1. #ifndef GLWIDGET_H
    2. #define GLWIDGET_H
    3.  
    4. #include <QtOpenGL/QGLWidget>
    5. #include <QWidget>
    6.  
    7. class QWidget;
    8.  
    9. class GLWidget : public QGLWidget
    10. {
    11. Q_OBJECT
    12.  
    13. public:
    14. GLWidget( QWidget *parent, QImage *pQImage );
    15.  
    16. protected:
    17. void paintEvent( QPaintEvent *event );
    18.  
    19. private:
    20. QImage *m_pQImage;
    21. };
    22.  
    23.  
    24. #endif
    To copy to clipboard, switch view to plain text mode 

    Qt Code:
    1. #include <QtGui>
    2. #include "glwidget.h"
    3.  
    4. GLWidget::GLWidget( QWidget *parent, QImage *pQImage )
    5. : QGLWidget(parent)
    6. {
    7. setFixedSize(640, 480);
    8. m_pQImage = pQImage;
    9. }
    10.  
    11. void GLWidget::paintEvent(QPaintEvent *event)
    12. {
    13. //QPainter painter;
    14. //painter.begin(this);
    15. //painter.drawImage( 0, 0, m_pQImage );
    16. //painter.end();
    17. }
    To copy to clipboard, switch view to plain text mode 

    Compile errors:
    Qt Code:
    1. glwidget.cpp:(.text+0x40): undefined reference to `QGLWidget::QGLWidget(QWidget*, QGLWidget const*, QFlags<Qt::WindowType>)'
    2. glwidget.cpp:(.text+0x7f): undefined reference to `QGLWidget::~QGLWidget()'
    3. glwidget.cpp:(.text+0xc0): undefined reference to `QGLWidget::QGLWidget(QWidget*, QGLWidget const*, QFlags<Qt::WindowType>)'
    4. glwidget.cpp:(.text+0xff): undefined reference to `QGLWidget::~QGLWidget()'
    5. moc_glwidget.cpp:(.text+0x15): undefined reference to `QGLWidget::qt_metacall(QMetaObject::Call, int, void**)'
    6. moc_glwidget.cpp:(.text+0x7d): undefined reference to `QGLWidget::qt_metacast(char const*)'
    7. moc_glwidget.cpp:(.text._ZN8GLWidgetD0Ev[GLWidget::~GLWidget()]+0x2b): undefined reference to `QGLWidget::~QGLWidget()'
    8. moc_glwidget.cpp:(.text._ZN8GLWidgetD1Ev[GLWidget::~GLWidget()]+0x25): undefined reference to `QGLWidget::~QGLWidget()'
    9. moc_glwidget.o:(.rodata+0x0): undefined reference to `QGLWidget::staticMetaObject'
    10. moc_glwidget.o:(.rodata._ZTV8GLWidget[vtable for GLWidget]+0x1c): undefined reference to `QGLWidget::event(QEvent*)'
    11. moc_glwidget.o:(.rodata._ZTV8GLWidget[vtable for GLWidget]+0x4c): undefined reference to `QGLWidget::paintEngine() const'
    12. moc_glwidget.o:(.rodata._ZTV8GLWidget[vtable for GLWidget]+0x84): undefined reference to `QGLWidget::resizeEvent(QResizeEvent*)'
    13. moc_glwidget.o:(.rodata._ZTV8GLWidget[vtable for GLWidget]+0xe0): undefined reference to `QGLWidget::updateGL()'
    14. moc_glwidget.o:(.rodata._ZTV8GLWidget[vtable for GLWidget]+0xe4): undefined reference to `QGLWidget::updateOverlayGL()'
    15. moc_glwidget.o:(.rodata._ZTV8GLWidget[vtable for GLWidget]+0xe8): undefined reference to `QGLWidget::initializeGL()'
    16. moc_glwidget.o:(.rodata._ZTV8GLWidget[vtable for GLWidget]+0xec): undefined reference to `QGLWidget::resizeGL(int, int)'
    17. moc_glwidget.o:(.rodata._ZTV8GLWidget[vtable for GLWidget]+0xf0): undefined reference to `QGLWidget::paintGL()'
    18. moc_glwidget.o:(.rodata._ZTV8GLWidget[vtable for GLWidget]+0xf4): undefined reference to `QGLWidget::initializeOverlayGL()'
    19. moc_glwidget.o:(.rodata._ZTV8GLWidget[vtable for GLWidget]+0xf8): undefined reference to `QGLWidget::resizeOverlayGL(int, int)'
    20. moc_glwidget.o:(.rodata._ZTV8GLWidget[vtable for GLWidget]+0xfc): undefined reference to `QGLWidget::paintOverlayGL()'
    21. moc_glwidget.o:(.rodata._ZTV8GLWidget[vtable for GLWidget]+0x100): undefined reference to `QGLWidget::glInit()'
    22. moc_glwidget.o:(.rodata._ZTV8GLWidget[vtable for GLWidget]+0x104): undefined reference to `QGLWidget::glDraw()'
    23. moc_glwidget.o:(.rodata._ZTV8GLWidget[vtable for GLWidget]+0x11c): undefined reference to `non-virtual thunk to QGLWidget::paintEngine() const'
    24. moc_glwidget.o:(.rodata._ZTI8GLWidget[typeinfo for GLWidget]+0x8): undefined reference to `typeinfo for QGLWidget'
    25. *** Exited with status: 2 ***
    To copy to clipboard, switch view to plain text mode 


    Do I need to specify any libraries to link against?

  2. #2
    Join Date
    Jan 2006
    Location
    Warsaw, Poland
    Posts
    5,372
    Thanks
    28
    Thanked 976 Times in 912 Posts
    Qt products
    Qt3 Qt4
    Platforms
    Unix/X11 Windows

    Default Re: Can't compile custom class derived from QGLWidget

    Try adding "QT += opengl" to your .pro file.

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Digia, Qt and their respective logos are trademarks of Digia Plc in Finland and/or other countries worldwide.