Warum wird Slot nicht gerufen?
Verfasst: 26. Februar 2007 15:54
Hallo,
naja der Titel muesste eigentlich heissen, warum compeliert er nicht mehr wenn ich den Slot haben will...
Also ich habe folgendes:
Im Header von testapp habe ich den Prototypen einer Funktion:
Wobei ich alles was mit "Add" zutun hat ich auch in Add.cpp implementieren moechte. Also habe ich in Add.cpp
Soweit kompeliert alles prima, wenn ich nun im Konstruktor von testapp folgendes connect einfuege:
bekomme ich beim make
Mein Gedankengang warum ich das alles gemacht habe:
Funktion calculate_app() als virtual deklariert damit sich zur Laufzeit das System die passende Funktion sucht.
Da das connect Statement im Konstruktor von testapp sein muss (da hier das ui File eingebunden wird) muss der Prototyp also im testapp.h File stehen.
Die Funktion calculate_add() gehoert zur Klasse Add, fuer die Klasse Add habe ich ein Objekt addWidget angelegt. Von diesem Objekt moechte ich jetzt die Funktion calculate_add() rufen also addWidget -> calculate_add().
Tja da der Compiler meckert, ist da wohl was falsch in meinem Gedankengang. Die Fehlermeldung besagt ja noch dass er kein testapp::calculate_add() finden kann, genau das will ich ja nicht mehr haben, aber wie sag ich es ihm? Oder besser warum ignoriert er mein "addWidget ->"
Bin mir sicher, dass mir jemand von euch einen Hinweis geben kann.
Der komplette Sourcecode ist angehangen.
Danke,
J.
naja der Titel muesste eigentlich heissen, warum compeliert er nicht mehr wenn ich den Slot haben will...
Also ich habe folgendes:
Code: Alles auswählen
testapp : QMainwindow
myWidget : QWidget
Add : myWidget
Sub : myWidget
Code: Alles auswählen
virtual void calculate_add();
Code: Alles auswählen
void Add::calculate_add(){
qDebug() << "calling method calculate_add";
app->c1 -> setText("add");
return;
}
Code: Alles auswählen
connect(add,SIGNAL (clicked()), this, SLOT(addWidget -> calculate_add()));
Code: Alles auswählen
g++ -o testapp Add.o main.o mywidget.o Sub.o testapp.o moc_testapp.o -L/usr/lib -L/usr/lib -L/usr/src/packages/BUILD/qt-x11-opensource-src-4.0.1/lib -lQtGui -L/usr/X11R6/lib -lpng -lSM -lICE -lXi -lXrender -lXrandr -lXcursor -lXinerama -lfreetype -lfontconfig -lXext -lX11 -lm -lQtCore -lz -ldl -lpthread
moc_testapp.o:(.gnu.linkonce.r._ZTV7testapp[vtable for testapp]+0xe4): undefined reference to `testapp::calculate_add()'
collect2: ld returned 1 exit status
make: *** [testapp] Error 1
Funktion calculate_app() als virtual deklariert damit sich zur Laufzeit das System die passende Funktion sucht.
Da das connect Statement im Konstruktor von testapp sein muss (da hier das ui File eingebunden wird) muss der Prototyp also im testapp.h File stehen.
Die Funktion calculate_add() gehoert zur Klasse Add, fuer die Klasse Add habe ich ein Objekt addWidget angelegt. Von diesem Objekt moechte ich jetzt die Funktion calculate_add() rufen also addWidget -> calculate_add().
Tja da der Compiler meckert, ist da wohl was falsch in meinem Gedankengang. Die Fehlermeldung besagt ja noch dass er kein testapp::calculate_add() finden kann, genau das will ich ja nicht mehr haben, aber wie sag ich es ihm? Oder besser warum ignoriert er mein "addWidget ->"
Bin mir sicher, dass mir jemand von euch einen Hinweis geben kann.
Der komplette Sourcecode ist angehangen.
Danke,
J.