Ich habe die Tage angefangen, mich etwas mit Qt zu beschäftigen, aber der Signals and Slots - Mechanismus treibt mich in den Wahnsinn, ich kriege einfach keine Programme mit selbsterstellten Signalen und Slots kompiliert. Ich habe den folgenden Code 1 zu 1 kopiert (!) von http://de.wikipedia.org/wiki/Signal-Slo ... _und_Slots:
Code: Alles auswählen
#include <QObject>
class Zahl : public QObject
{
Q_OBJECT
private:
int wert;
public:
Zahl() : wert(0)
{
}
int wertLesen() const { return wert; }
public slots:
void setzeWert(int wert)
{
if (wert != this->wert)
{
this->wert = wert;
emit wertGeaendert(wert);
}
}
signals:
void wertGeaendert(int neuerWert);
};
int main(void)
{
Zahl a, b; // a.wertLesen() == 0, b.wertLesen() == 0
a.setzeWert(5); // a.wertLesen() == 5, b.wertLesen() == 0
b.setzeWert(48); // a.wertLesen() == 5, b.wertLesen() == 48
QObject::connect(&a, SIGNAL( wertGeaendert(int) ), &b, SLOT( setzeWert(int) ) );
a.setzeWert(12); // a.wertLesen() == 12, b.wertLesen() == 12
b.setzeWert(23); // a.wertLesen() == 12, b.wertLesen() == 23
}
Code: Alles auswählen
main.cpp:(.text+0x2a): undefined reference to `vtable for Zahl'
main.cpp:(.text+0x4b): undefined reference to `vtable for Zahl'
main.cpp:(.text+0x6f): undefined reference to `Zahl::wertGeaendert(int)'
main.cpp:(.text+0x8c): undefined reference to `Zahl::wertGeaendert(int)'
main.cpp:(.text+0xcd): undefined reference to `Zahl::wertGeaendert(int)'
main.cpp:(.text+0xea): undefined reference to `Zahl::wertGeaendert(int)'
main.cpp:(.text+0xf1): undefined reference to `vtable for Zahl'
main.cpp:(.text+0x100): undefined reference to `vtable for Zahl'
main.cpp:(.text+0x11f): undefined reference to `vtable for Zahl'
main.cpp:(.text+0x138): undefined reference to `vtable for Zahl'
collect2: ld returned 1 exit status
make: *** [test] Error 1
Code: Alles auswählen
TEMPLATE = app
TARGET =
DEPENDPATH += .
INCLUDEPATH += .
# Input
SOURCES += main.cpp
MetalChuck