对类的未定义引用

undefined reference to a class

本文关键字:引用 未定义      更新时间:2023-10-16

我正在用Qt4构建一个小游戏。 以下是代码:

液晶控制.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

液晶控制.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);
}

绘图.h :

#ifndef DRAWING_H
#define DRAWING_H
#include <QPushButton>
class drawingClass : public QWidget
{
    Q_OBJECT
public:
    drawingClass(QWidget *parent=0);
private:
    QPushButton *quitbutton;
};

#endif

绘图.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);
}

主.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

请帮我解决这个问题。

> YOu 没有向链接器提供 drawingClass 构造函数的定义。

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