Seite 1 von 1

VS2005 -> signal / slots funktionieren nicht

Verfasst: 22. Januar 2007 13:18
von deadlogg
Hallo liebe Leser, helft mir mal bitte.

Ich habe MS Visual Studio 2005 installiert und Qt4.2.2.
Wenn ich mein Projekt ,aus VS 2005 heraus,kompiliere dann macht er das auch brav und baut aus der *.ui vom Designer mein Programm.
Wenn ich dann in der MenuLeiste auf einen Eintrag klicke, dann wird anscheinend keine Action ausgelöst. Auf jeden Fall gehen die Signal/Slots nicht, obwohl sie richtig konfiguriert sind.

Sooo, wenn ich das ganze von der Command Line mache mit
qmake...
nmake...
Dann geht alles.

Wo denkt ihr hängts ? Irgendwas mit dem MOC ?
Was kann ich hier posten, damit ihr besseren Einblick habt?

Gruß Ben

Re: VS2005 -> signal / slots funktionieren nicht

Verfasst: 22. Januar 2007 14:12
von macman
deadlogg hat geschrieben:Wo denkt ihr hängts ? Irgendwas mit dem MOC ?
An den Plenks oder am vergessenen Apostroph :-)
Nein, im Ernst, schau mal im VS, Rechtsklick auf eine Headerdatei, Eigenschaften, und dann müsste unter 'Benutzerdef. Buildschritt' was eingetragen sein, sonst wird der MOC nicht aufgerufen. Einfachste Lösung, da Du mit der Kommandozeile schon arbeitest, qmake -tp vc myProfile.pro.

Danke, aber...

Verfasst: 22. Januar 2007 16:20
von deadlogg
Danke für die Antwort,
mein Eintrag ist

$(QTDIR)\bin\moc.exe "$(InputPath)" -o "$(InputDir)moc_$(InputName).cpp"

Ausgabe:
$(InputDir)moc_$(InputName).cpp

Compiler meldet beim compilen:

------ Erstellen gestartet: Projekt: QtProjekt, Konfiguration: Debug Win32 ------
Performing moc on MainWindow.h
Kompilieren...
main.cpp
c:\programme\qt4\src\corelib\arch\qatomic_windows.h(135) : warning C4311: 'reinterpret_cast': Zeigerverkürzung von 'void *' zu 'long'
c:\programme\qt4\src\corelib\arch\qatomic_windows.h(135) : warning C4311: 'reinterpret_cast': Zeigerverkürzung von 'void *' zu 'long'
c:\programme\qt4\src\corelib\arch\qatomic_windows.h(135) : warning C4312: 'reinterpret_cast': Konvertierung von 'long' in größeren Typ 'void *'
c:\programme\qt4\src\corelib\arch\qatomic_windows.h(147) : warning C4311: 'reinterpret_cast': Zeigerverkürzung von 'void *' zu 'long'
c:\programme\qt4\src\corelib\arch\qatomic_windows.h(147) : warning C4312: 'reinterpret_cast': Konvertierung von 'long' in größeren Typ 'void *'
MainWindow.cpp
c:\programme\qt4\src\corelib\arch\qatomic_windows.h(135) : warning C4311: 'reinterpret_cast': Zeigerverkürzung von 'void *' zu 'long'
c:\programme\qt4\src\corelib\arch\qatomic_windows.h(135) : warning C4311: 'reinterpret_cast': Zeigerverkürzung von 'void *' zu 'long'
c:\programme\qt4\src\corelib\arch\qatomic_windows.h(135) : warning C4312: 'reinterpret_cast': Konvertierung von 'long' in größeren Typ 'void *'
c:\programme\qt4\src\corelib\arch\qatomic_windows.h(147) : warning C4311: 'reinterpret_cast': Zeigerverkürzung von 'void *' zu 'long'
c:\programme\qt4\src\corelib\arch\qatomic_windows.h(147) : warning C4312: 'reinterpret_cast': Konvertierung von 'long' in größeren Typ 'void *'
moc_MainWindow.cpp
c:\programme\qt4\src\corelib\arch\qatomic_windows.h(135) : warning C4311: 'reinterpret_cast': Zeigerverkürzung von 'void *' zu 'long'
c:\programme\qt4\src\corelib\arch\qatomic_windows.h(135) : warning C4311: 'reinterpret_cast': Zeigerverkürzung von 'void *' zu 'long'
c:\programme\qt4\src\corelib\arch\qatomic_windows.h(135) : warning C4312: 'reinterpret_cast': Konvertierung von 'long' in größeren Typ 'void *'
c:\programme\qt4\src\corelib\arch\qatomic_windows.h(147) : warning C4311: 'reinterpret_cast': Zeigerverkürzung von 'void *' zu 'long'
c:\programme\qt4\src\corelib\arch\qatomic_windows.h(147) : warning C4312: 'reinterpret_cast': Konvertierung von 'long' in größeren Typ 'void *'
Code wird generiert...
Verknüpfen...
Das Manifest wird eingebettet...
Das Buildprotokoll wurde unter "file://c:\Dokumente und Einstellungen\Ben\Eigene Dateien\Visual Studio 2005\Projects\QtProjekt\QtProjekt\Debug\BuildLog.htm" gespeichert.
QtProjekt - 0 Fehler, 15 Warnung(en)
========== Erstellen: 1 erfolgreich, Fehler bei 0, 0 aktuell, 0 übersprungen ==========



Noch eine Idee ?

Verfasst: 22. Januar 2007 23:44
von M@g!ndo$ch
Hmmmm,

also bei mir steht bei dem Custom Build Step das gleiche drin.
Ich hab die moc_Name.cpp-Files dann noch zu den Source Files zugefügt....

Und bei connect() kommt auch true zurück?

Verfasst: 24. Januar 2007 12:42
von deadlogg
Danke.
Also wie gesagt, wenn ichs mit qmake, nmake von der Kommandozeile mache klappts... auf der Konsole kommt kein Fehler, dass das connect nicht geklappt hätte. Also wenn ich beim connect den SLOT absichtlich auf eine falsche Funktion setzte, dann kommt eine Fehlermeldung...
hmm die moc_... zu den Sources hinzufügen.
Ich mein, dass hab ich gemacht... muss ich nochmal schauen wenn ich @home bin.

Verfasst: 24. Januar 2007 13:11
von Christian81
die moc_*.cpp werden auf alle Fälle mit gelinkt - sonst wären da Linkerfehler zu sehen.
Was mich wundert sind die Warnungen - ist das ein 64Bit Compiler?
Ausserdem würde ich mal 'CONFIG +=console' in die pro-Datei einfügen und schauen was für Debug-Messages dort ausgegeben werden.