Konkretes Problem beim lernen von QT

Post Reply
Message
Author
dave_g22

Konkretes Problem beim lernen von QT

#1 Post by dave_g22 »

Ich habe ein Beispiel aus dem Buch "KDE und QT Programmierung" (Addison Wesley) abgetippt, aber es will partout nicht laufen, es wäre nett wenn sich das mal jemand ansehen würde und mir sagen kann, worher unten aufgeführte Fehler stammen. Das Buch geht als Arbeitsumgebung von KDE 2.2 aus, ich benutze KDE 3.1 und von der QT-Version 2.0 ich benutze 3.0 oder 3.1 (kann ich nicht genau sagen), Arbeiten tue ich mit KDevelop 2.1.5 die erstellte Objektumgebung ist QT SDI. Ich weiß es ist viel verlangt aber bitte helft mir, auch zu Erklärungen dieses Problems helfen mir.
Danke.

/*mycounter.h*/
#ifndef _MYCOUNTER_H_
#define _MYCOUNTER_H_

#include <qlabel.h>

class CmyCounter:public QLabel
{
Q_OBJECT

public:
CmyCounter(QWidget *parent=0,const char *name=0);
~CmyCounter();

public slots:
void countUp();

private:
int n;
};
#endif


/*mycounter.cpp*/
#include "mycounter.h"

CmyCounter::CmyCounter(QWidget *parent,const char* name)
: QLabel(parent,name),n(0)
{
setNum(0);
}

CmyCounter::~CmyCounter()
{}
void CmyCounter::countUp()
{
n++;
setNum(n);
}

/*main.cpp*/
#include <qapplication.h>
#include <qpushbutton.h>
#include "mycounter.h"

int main(int argc,char* argv[])
{
QApplication app (argc,argv);
QPushButton *b = new QPushButton ("Click",0);
b->show();

CmyCounter *c = new CmyCounter(0);
c->show();

QObject::connect(b,SIGNAL(clicked()),
c,SLOT(countUP()));

app.setMainWidget(b);
return app.exec();
}

Die Fehler die beim Kompilieren rausgeworfen sind und welche ich nicht verstehe sind folgende:
mycounter.o(.text+0x1e): In function `CmyCounter::CmyCounter[not-in-charge](QWidget*, char const*)':
/home/dave_g22/cppprogrammierung/helloqt4/helloqt4/mycounter.cpp:5: undefined reference to `vtable for CmyCounter'
mycounter.o(.text+0x2a):/home/dave_g22/cppprogrammierung/helloqt4/helloqt4/mycounter.cpp:5: undefined reference to `vtable for CmyCounter'
mycounter.o(.text+0x6c): In function `CmyCounter::CmyCounter[in-charge](QWidget*, char const*)':
/home/dave_g22/cppprogrammierung/helloqt4/helloqt4/mycounter.cpp:5: undefined reference to `vtable for CmyCounter'
mycounter.o(.text+0x78):/home/dave_g22/cppprogrammierung/helloqt4/helloqt4/mycounter.cpp:5: undefined reference to `vtable for CmyCounter'
mycounter.o(.text+0xa7): In function `CmyCounter::~CmyCounter [not-in-charge]()':
/home/dave_g22/cppprogrammierung/helloqt4/helloqt4/mycounter.cpp:10: undefined reference to `vtable for CmyCounter'
mycounter.o(.text+0xb3):/home/dave_g22/cppprogrammierung/helloqt4/helloqt4/mycounter.cpp:10: more undefined references to `vtable for CmyCounter' follow
collect2: ld returned 1 exit status

tj

Re: Konkretes Problem beim lernen von QT

#2 Post by tj »

Hi,

welche GCC version verwendest Du? Ist die Qt Bibliothek mit der gleichen Version
von Compiler erzeugt worden? Wenn Du z.B. GCC 3.x verwendest und die Qt mit 2.x
kompiliert wurde, dann laesst sich das nicht zusammenlinken...

tj

axeljaeger

Re: Konkretes Problem beim lernen von QT

#3 Post by axeljaeger »

ich denke, du hast vergessen, die Meta Object Code zu deiner Exe dazuzulinken. Ich will jetzt das Team von Pro-Linux nicht angreifen oder Mitglieder abwerben, aber ich hab die Erfahrung gemacht, das dir bei www.mrunix.de bei Qt-Problemen dank des sehr engangierten Admins "anda_skoa" sehr schnell geholfen wird.

dave_g22

Re: Konkretes Problem beim lernen von QT

#4 Post by dave_g22 »

Ja, ich habe wirklich vergessen den moc (meta object compiler) für den Header aufzurufen.
Dieser erzeugt eine x.cpp Datei die man mitkompilieren muss und dann gehts.
Danke Nochmal
CU

Post Reply