Q_OBJECT verursacht "undefined reference to vtable"

Alles rund um die Programmierung mit Qt
Antworten
Sebleb
Beiträge: 15
Registriert: 17. Juli 2011 19:17

Q_OBJECT verursacht "undefined reference to vtable"

Beitrag von Sebleb »

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

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
project.cpp

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);
}

main.cpp

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();
}
 
Fehlermeldung

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
Vielen Dank schönmal im voraus.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Re: Q_OBJECT verursacht "undefined reference to vtable"

Beitrag von upsala »

Schon mal die Suchfunktion benutzt?
Sebleb
Beiträge: 15
Registriert: 17. Juli 2011 19:17

Re: Q_OBJECT verursacht "undefined reference to vtable"

Beitrag von Sebleb »

upsala hat geschrieben:Schon mal die Suchfunktion benutzt?
Hallo upsala!
wenn ich was gefunden hätte, hätte ich meine Frage nicht gestellt
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: Q_OBJECT verursacht "undefined reference to vtable"

Beitrag von franzf »

Das ist ein gängiges Problem, welches hier mit schweizer Präzision regelmäßig auftritt.
In den "Suche"-Kasten oben gibst du "undefined reference to vtable" ein, dann wirst du mit Ergebnisen erschlagen.
Deshalb:
wenn ich was gefunden hätte, hätte ich meine Frage nicht gestellt
Wenn du gesucht hättest, hättest du etwas gefunden.

// edit:
Das steht sogar dicke unten in der FAQ!
Antworten