Problem mit Q_OBJECT
Verfasst: 10. Februar 2008 15:09
Hallo
Ich hab QT über die Installationsexe installiert (mit MinGW) und die Configure.exe ausgeführt. Dieser Teil sollte eigentlich problemlos verlaufen sein. Anschließend habe ich die Header in Dev C++ (meine Entwicklungsumgebung) eingebunden und die .lib/.a Dateien angegeben.
Dann habe ich mit "qmake -project" und "qmake" die .pro-Datei bzw. die makefiles erstellt und diese in Dev C++ eingebunden.
Wenn ich nun ein Programm ohne Q_OBJECT schreibe, wird dieses fehlerlos compiliert. Wenn ich allerdings Q_OBJECT setze, erscheint unter anderem folgende Fehlermeldung:
Das ist mein Testprogramm:
Ich vermute, dass der MOC irgendwie nicht arbeitet, oder was meint ihr dazu ?
Wäre über Hilfe sehr dankbar.
Ich hab QT über die Installationsexe installiert (mit MinGW) und die Configure.exe ausgeführt. Dieser Teil sollte eigentlich problemlos verlaufen sein. Anschließend habe ich die Header in Dev C++ (meine Entwicklungsumgebung) eingebunden und die .lib/.a Dateien angegeben.
Dann habe ich mit "qmake -project" und "qmake" die .pro-Datei bzw. die makefiles erstellt und diese in Dev C++ eingebunden.
Wenn ich nun ein Programm ohne Q_OBJECT schreibe, wird dieses fehlerlos compiliert. Wenn ich allerdings Q_OBJECT setze, erscheint unter anderem folgende Fehlermeldung:
Code: Alles auswählen
[Linker error] undefined reference to `vtable for Hauptfenster'Code: Alles auswählen
#include <QApplication>
#include <QObject>
#include <QWidget>
#include <QGridLayout>
#include <QLabel>
#include <QPushButton>
class Hauptfenster : public QWidget
{
Q_OBJECT
public:
Hauptfenster ()
{
box = new QGridLayout (this);
button[0] = new QPushButton ("Drücken1",this);
button[1] = new QPushButton ("Drücken2",this);
label[0] = new QLabel("Was ist das ?",this);
label[1] = new QLabel("Was ist das ?",this);
box->addWidget(button[0],0,0) ;
box->addWidget(label[0],0,1) ;
box->addWidget(button[1],1,0) ;
box->addWidget(label[1],1,1) ;
QObject::connect( button[0], SIGNAL(clicked()), this,
SLOT(setlabel ()));
QObject::connect( button[1], SIGNAL(clicked()), this,
SLOT(setlabel())) ;
this->show();
}
private slots:
void setlabel ()
{
label[0]->setText("Label1");
label[1]->setText("Label2");
}
private:
QGridLayout * box;
QLabel * label[2];
QPushButton * button[2];
};Ich vermute, dass der MOC irgendwie nicht arbeitet, oder was meint ihr dazu ?
Wäre über Hilfe sehr dankbar.