首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

报错:undefined reference to ‘vtable for,刚刚开始学QT,求好手解决困惑

2013-02-24 
报错:undefined reference to ‘vtable for,刚刚开始学QT,求高手解决困惑头文件//////////////////////////

报错:undefined reference to ‘vtable for,刚刚开始学QT,求高手解决困惑
头文件
///////////////////////////
#include <QObject>
class student :public QObject
{
     Q_OBJECT
public:
    student();
    void studentask(int n);
public slots:
    void studentslot(int n);
signals:
    void studentsend(int n);

};
/////
#include <QObject>
#include<QDebug>
class teach:public QObject
{
    Q_OBJECT
public:
    teach();
public slots:
    void myslot(int n);
signals:
    void mysignteach(int n);
};
////
#include <QWidget>
#include "teach.h"
#include "student.h"

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT
    
public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();
protected:
    void changeEvent(QEvent *e);
public slots:
    void myslots();
signals:
    void mysignals();
private:
    student *pstu;
    teach *ptch;
    Ui::Widget *ui;
};
//////////////////////////////////////////////
源文件
///////////////////////////////////////
#include "student.h"
#include <QDebug>

student::student()
{
}
void student::studentslot(int n)
{
    qDebug()<<"teacher"<<n;
}

void student::studentask(int n)
{
    emit(studentsend(n));
}
//////

#include "teach.h"
#include <QDebug>

teach::teach()
{
}
void teach::myslot(int n)
{
    qDebug()<<"studen send come info:"<<n;
}
//////
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ptch = new teach();
    pstu = new student();
    ui->setupUi(this);
   //  QObject::connect(pstu,SIGNAL(studentsend(int)),ptch,SLOT(myslots(int)));
  //  QObject::connect(this,SIGNAL(mysignals()),this,SLOT(myslots()));
    // emit(studentask(888));
     pstu->studentask(888);
}

Widget::~Widget()
{
    delete ptch;
    delete pstu;
    delete ui;
}
void Widget::changeEvent(QEvent *e)
{
    QWidget::changeEvent(e);
    switch (e->type()) {
    case QEvent::LanguageChange:
        ui->retranslateUi(this);
        break;
    default:
        break;
    }
}
void Widget::myslots()
{
    qDebug()<<"myslots";


} qt
[解决办法]
有中文符号吧
[解决办法]

引用:
引用:
用命令行进入到源码目录 执行qmake 
然后再make或者nmake重新编译试试?

我是写在windows 下面的。直接拿过去么


1)在windows你需要配置下环境变量啊 
2)或者你找到qmake的安装目录 比如E:/Qt/bin/qmake
然后进入到你项目的源码目录
执行下面的语句
E:/opt/bin/qmake 
这样会生成对应平台的makefile文件
你说的问题貌似是你之前没有定义Q_OBJECT 后来又定义的缘故所致
3) 你要嫌1,2麻烦,就直接新建一个工程,把现在代码拷过去,重新编译一下

热点排行