Q_OBJECT verursacht "undefined reference to vtable"
Verfasst: 27. August 2011 18:20
Hallo Zusammen.
Ich bin noch relativ neu mit QT.
Mein Progamm funktioniert soweit ganz gut, doch ich bekomme mein Slot nicht ans Laufen.
Wenn ich Q_OBJECT auskommentiere, läuft das Programm zwar, aber der Slot funktioniert nicht. Andernfalls kommt die Fehlermeldung: "undefined reference to vtable: `MyWidget::MyWidget()'
Hier ist mein Code. Vielleicht kennt jemand die Lösung.
project.h
project.cpp
main.cpp
Fehlermeldung
Vielen Dank schönmal im voraus.
Ich bin noch relativ neu mit QT.
Mein Progamm funktioniert soweit ganz gut, doch ich bekomme mein Slot nicht ans Laufen.
Wenn ich Q_OBJECT auskommentiere, läuft das Programm zwar, aber der Slot funktioniert nicht. Andernfalls kommt die Fehlermeldung: "undefined reference to vtable: `MyWidget::MyWidget()'
Hier ist mein Code. Vielleicht kennt jemand die Lösung.
project.h
Code: Alles auswählen
class MyWidget :public QWidget
{
Q_OBJECT;
public:
MyWidget(void);
public slots:
void addint(void);
private:
QPushButton *add;
QLineEdit* num1 ;
QLineEdit* num2 ;
QLineEdit* num3 ;
};
#endif
Code: Alles auswählen
#include <QApplication>
#include <QLineEdit>
#include <QLabel>
#include <QPushButton>
#include <QLayout>
#include <QString>
#include "project.h"
#include <QtGui>
MyWidget::MyWidget(void)
{
num1 = new QLineEdit(this); // Text-Feld
num1->setText( "0" );
num2 = new QLineEdit(this); // Text-Feld
num2->setText( "0" );
num3 = new QLineEdit(this); // Text-Feld
num3->setText( "0" );
QPushButton *qpb = new QPushButton("Add",this); // Knopf
QLabel *qlab = new QLabel("Result",this); // label
QVBoxLayout* layout = new QVBoxLayout(this);
layout->addWidget(num1);
layout->addWidget(qpb);
layout->addWidget(num2);
layout->addWidget(qlab);
layout->addWidget(num3);
//
QObject::connect(qpb,SIGNAL(clicked()),this,SLOT(addint())); // button => addint
QObject::connect(num1,SIGNAL(returnPressed()),this,SLOT(addint())); // teield => addint
QObject::connect(num2,SIGNAL(returnPressed()),this,SLOT(addint()));
}
void MyWidget::addint() {
int v1 = (num1->text()).toInt();
int v2 = (num2->text()).toInt();
int v3 = v1 + v2;
QString qs;
qs.setNum(v3);
num3->setText(qs);
}
Code: Alles auswählen
#include "project.h"
int main(int argc,char** argv)
{
QApplication app(argc,argv);
QWidget* mywidget = new MyWidget();
mywidget->resize(120,130);
mywidget->show();
return app.exec();
}
Code: Alles auswählen
In function `MyWidget::MyWidget()':
project.cpp:(.text+0x2d): undefined reference to `vtable for MyWidget'
project.cpp:(.text+0x34): undefined reference to `vtable for MyWidget'
collect2: ld returned 1 exit status