2012-10-06 54 views
0

我正在Qt4中构建一个小游戏。这里是代码:未定义的参考类

lcdcontrol.h:

#ifndef LCDCONTROL_H 
#define LCDCONTROL_H 



#include <QLCDNumber> 
#include <QtGui> 
#include <QWidget> 

class lcdControl: public QWidget 
{ 
    Q_OBJECT 

public: 
    lcdControl(QWidget *parent=0); 

signals: 
    void valueChanged(int newValue); 

public slots: 
    void setValue(int value); 
    //void setRange(int minValue, int maxValue); 
    //void quit(); 

private: 
    QSlider *slider; 
    //QPushButton *quitbutton; 

}; 


#endif 

lcdcontrol.cpp:

#include <QLCDNumber> 
#include <QSlider> 
#include <QGridLayout> 

#include "lcdcontrol.h" 

lcdControl::lcdControl(QWidget *parent): QWidget(parent) 
{ 

    QLCDNumber *lcd = new QLCDNumber(2);    //2 for 2 digits 
    lcd->setSegmentStyle(QLCDNumber::Filled); 

    slider = new QSlider(Qt::Horizontal); 
    slider->setRange(0,99); 
    slider->setValue(0); 

    connect(slider,SIGNAL(valueChanged(int)),lcd,SLOT(display(int))); 
    connect(slider,SIGNAL(valueChanged(int)),this,SIGNAL(valueChanged(int))); 

    QVBoxLayout *layout = new QVBoxLayout; 
    layout->addWidget(lcd); 
    layout->addWidget(slider); 
    setLayout(layout); 

    setFocusProxy(slider); 
} 

void lcdControl::setValue(int value) 
{ 
    slider->setValue(value); 
} 

drawing.h:

#ifndef DRAWING_H 
#define DRAWING_H 

#include <QPushButton> 

class drawingClass : public QWidget 
{ 
    Q_OBJECT 
public: 
    drawingClass(QWidget *parent=0); 

private: 
    QPushButton *quitbutton; 
}; 


#endif 

drawing.cpp:

#include <QVBoxLayout> 
#include <QGridLayout> 
#include <QtGui> 
#include "drawing.h" 
#include "lcdcontrol.h" 

drawingClass::drawingClass(QWidget *parent): QWidget(parent) 
{ 

    quitbutton = new QPushButton(tr("&Quit!")); 
    connect(quitbutton,SIGNAL(clicked()),qApp,SLOT(quit())); 

    lcdControl *angle = new lcdControl; 
    lcdControl *force = new lcdControl; 

    QVBoxLayout *leftlayout = new QVBoxLayout; 
    leftlayout->addWidget(angle); 
    leftlayout->addWidget(force); 

    QGridLayout *mainlayout = new QGridLayout; 
    mainlayout->addWidget(quitbutton,0,0); 
    mainlayout->addLayout(leftlayout); 
    mainlayout->setColumnStrech(1,10); 
    setLayout(mainlayout); 
} 

的main.cpp

#include <QApplication> 
#include <QtGui> 
#include "drawing.h" 

int main(int argc, char **argv) 
{ 
    QApplication app(argc,argv); 
    drawingClass ob; 
    ob.resize(500,200); 
    ob.show(); 
    return app.exec(); 
} 

的错误是:

main.cpp:(.text.startup+0x28): undefined reference to `drawingClass::drawingClass(QWidget*)' 
main.cpp:(.text.startup+0x6e): undefined reference to `vtable for drawingClass' 
main.cpp:(.text.startup+0x77): undefined reference to `vtable for drawingClass' 
main.cpp:(.text.startup+0xb4): undefined reference to `vtable for drawingClass' 
main.cpp:(.text.startup+0xbd): undefined reference to `vtable for drawingClass' 
collect2: ld returned 1 exit status 

请帮我出这一点。

回答

2

你还没有提供链接器的构造函数的drawingClass的定义。

很可能你忘了将该.cpp文件添加到项目中。