Seite 1 von 2

signal/slot connect Problem

Verfasst: 9. November 2006 17:45
von noirabys
Hallo !
in meinem Programm benutze ich signal/slots
und verbinde sie mittels connect .
Soweit so gut, das ganze kompiliert allerdings auch
wenn die methoden sprich signal und slots gar nicht existieren !?

d.h. schreibe ich Blödsinn rein:
QObject::connect(m,SIGNAL(upda(QColor)),this,SLOT());
compiliert & linkt es,aber funktioniert natürlich nicht.

die moc files sehen ok aus , das object in dem das connect steht wird auch neu gebaut .

g++ -c -O2 -O2 -Wall -frtti -fexceptions -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_EDITION=QT_EDITION_DESKTOP -DQT_THREAD_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NEEDS_QMAIN -I"D:/qt/include/QtGui" -I"D:/qt/includ
e/QtCore" -I"D:/qt/include" -I"D:/qt/include/ActiveQt"
-I"tmp\moc\release_shared" -I"." -I"D:/qt/mkspecs/win32-g++"
-o tmp\obj\release_shared\dactest.o dactest.cpp

g++ -mthreads -Wl,-enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-s -Wl,-s -Wl,-subsystem,windows -o "release\dactest.exe" tmp\obj\release_shared\dactest.o tmp\obj\release_shared\main.o tmp\obj\
release_shared\mythread.o tmp\obj\release_shared\moc_dactest.o tmp\obj\release_shared\moc_neuesqlineedit.o tmp\obj\release_shared\moc_rating_label.o tmp\obj
\release_shared\moc_mythread.o tmp\obj\release_shared\qrc_dac.o -L"D:\qt\lib" -L"D:\qt\lib" -lmingw32 -lqtmain -lQtCore4 -lQtGui4

langsam verweifel ich !!!
Wer hat eine Idee , was übersehe ich bei der ganzen Geschichte.
Wenn die Informationen nicht ausreichen kann ich gerne noch mehr schreiben !

Vielen Dank im Voraus
Grüße
noirabys

Verfasst: 9. November 2006 18:07
von Christian81
Es ist klar dass dies funktioniert da dies erst während der Laufzeit geprüft wird.
Allerdings wird bei einem fehlerhaften connect zur Laufzeit eine warnung auf der Konsole ausgegeben.

Fehlermeldung ?

Verfasst: 10. November 2006 06:08
von noirabys
Danke für die Antwort !
eine Fehlermeldung erhalte ich aber leider nicht !?
Was muß man tun um diese zu erhalten ? ist es dabei egal ob Debug oder Release version ? Bei mir funktioniert es in beiden nicht !

Viele Grüße
noirabys

Verfasst: 10. November 2006 08:31
von Christian81
Unter windows muss noch
CONFIG += console (siehe http://doc.trolltech.com/4.2/qmake-vari ... tml#config) in der pro-Datei stehen.
Habe übersehen das es Windows ist.

Verfasst: 10. November 2006 08:52
von RHBaum
Normal zeigt er aber alles was er auf die error console schreibt, auch in das debug ausgabefenster rein (wenn im debug modus bist klar ^^) ....

Welche IDE benutzt du ?

Ciao ...

Verfasst: 10. November 2006 10:44
von macman
Man muss aber auch gegen die Qt-Debug-Libs verlinken. Ist mir im Eifer des Gefechts auch schon mal passiert. Ein einfaches d vergessen und schon bekommt man keine Meldungen mehr, das ein connect nicht erfolgreich war.

debug flags ...

Verfasst: 10. November 2006 12:49
von noirabys
Also "ide" benutze ich keine ...

fehlt denn was bei den Compiler -flags ?

g++ -c -g -g -Wall -frtti -fexceptions -DUNICODE -DQT_LARGEFILE_SUPPORT
-DQT_EDITION=QT_EDITION_DESKTOP -DQT_THREAD_SUPPORT -DQT_DLL -DQT_CORE_LIB -DQT_
GUI_LIB -DQT_NEEDS_QMAIN -I"D:/qt/include/QtGui" -I"D:/qt/include/QtCore" -I"D:/
qt/include" -I"D:/qt/include/ActiveQt" -I"tmp\moc\debug_shared" -I"." -I"D:/qt/m
kspecs/win32-g++" -o tmp\obj\debug_shared\main.o main.cpp
g++ -mthreads -Wl,-enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-ena
ble-runtime-pseudo-reloc -Wl,-subsystem,windows -o "debug\dactest.exe" tmp\obj\d
ebug_shared\dactest.o tmp\obj\debug_shared\main.o tmp\obj\debug_shared\mythrea
d.o tmp\obj\debug_shared\moc_dactest.o tmp\obj\debug_shared\moc_neuesqlineedit
.o tmp\obj\debug_shared\moc_rating_label.o tmp\obj\debug_shared\moc_mythread.o
tmp\obj\debug_shared\qrc_dac.o -L"D:\qt\lib" -L"D:\qt\lib" -lmingw32 -lqtmain
d -lQtCored4 -lQtGuid4

Vielen dank und grüße
noirabys

Verfasst: 10. November 2006 13:59
von Christian81
Hast Du es überhaupt schonmal mit der config-Option ausprobiert??

Verfasst: 11. November 2006 20:42
von noirabys
Hallo !
hab deine Antwort übersehen , werde es direkt montag ausprobieren

vielen dank !!!
noirabys

Re: signal/slot connect Problem

Verfasst: 11. November 2006 23:03
von Undefined
noirabys hat geschrieben:Hallo !
d.h. schreibe ich Blödsinn rein:
QObject::connect(m,SIGNAL(upda(QColor)),this,SLOT());
compiliert & linkt es,aber funktioniert natürlich nicht.
Du brauchst an der*. pro gar nichts zu machen weil QOBJECT Bestandteil von QtCore ist.
Mal anders gefragt was hast du den nun wirklich in der Klasse stehen das da oben doch Hoffentlich nicht - oder?
Ist die Klasse von QOBJECT abgeleitet ?

Re: signal/slot connect Problem

Verfasst: 12. November 2006 00:13
von Christian81
Undefined hat geschrieben: Du brauchst an der*. pro gar nichts zu machen weil QOBJECT Bestandteil von QtCore ist.
Das erklär mir mal genauer... was hat das eine mit dem anderen zu tun?
Undefined hat geschrieben: Mal anders gefragt was hast du den nun wirklich in der Klasse stehen das da oben doch Hoffentlich nicht - oder?
Es ist egal was dort steht - das wichtige ist dass es kompiliert und zur Laufzeit einen Fehler ausgibt...

Verfasst: 13. November 2006 06:25
von noirabys
also mit CONFIG += console klappt es in der Debug Version !
Als Fehler spuckte er mir dann aus
QObject::connect: Cannot queue arguments of type QColor , hab es
nun in die rgb Werte als int abgewandelt nun geht es !

Vielen Dank !

...bleibt nur noch die Frage offen warum QColor nicht als parameter genommen werden kann ?!

Verfasst: 13. November 2006 06:30
von Christian81
noirabys hat geschrieben: ...bleibt nur noch die Frage offen warum QColor nicht als parameter genommen werden kann ?!
Weil es kein Signal und/oder Slot gibt welches das verarbeiten kann.

Verfasst: 14. Januar 2007 17:42
von M@g!ndo$ch
Hi,

ich entwickle mit Visual Studio 2005. Wie kann ich da einstellen, dass die Warnungen zur Laufzeit ausgegeben werden? Ich hab da ja keine .pro-Datei oder zumindest habe ich keine gefunden. Und im Output-Fenster von VS ist nichts zu sehen :-(

mfg M@g

Verfasst: 14. Januar 2007 17:50
von Christian81
Als Konsolenanwendung kompilieren - dann kommt noch ein DOS-Fenster mit den debugausgaben. Irgendwo in den Linkereinstellungen.