Seite 1 von 1

Anwendung ohne QApplication

Verfasst: 8. August 2008 10:29
von kallitokaco
Hi

ich arbeite mit QT und OGRE, daher muss ich die eventschleife/Renderschleife von OGRE laufen lassen und kann kein QApplication.exec() ausführen. Soweit kein Problem, alles klappt ganz normal.
Nunja fasst, ich nutze ein TcpSocket und sende die Daten an nen Server , der antwortet und die daten kommen bei mir an( mit Wireshark ), allerdings wird kein signal ausgelößt, das Daten lesbar sind.

ein connect welches mein eigenes Signal mit meinem Slot verbindet, klappt auch, wenn ich das Signal selbst auslöse ( emit).

Daher denke ich, dass das Problem da liegt, dass Qt nicht überprüft ob Daten angekommen sind, da ja keine QApplication ausgeführt wird.


Wie kann ich manuell überprüfen ob beim Tcpsocket daten angekommen sind, bzw wie kann ich QT alle Signale und Slots einmal überprüfen lassen.

Übrigens hab ich alle Libs eingebunden und so, daran liegt es nit und Fehler kommen keine. Im debugger führt der eben nur OGRE sachen aus ohne QT.

Vielen Dank für die Hilfe, ich suche schon seit n paar tagen nach ner Lösung ohne Erfolg...


Kallitokaco

Verfasst: 8. August 2008 13:04
von solarix
Daher denke ich, dass das Problem da liegt, dass Qt nicht überprüft ob Daten angekommen sind, da ja keine QApplication ausgeführt wird.
korrekt...
wie kann ich QT alle Signale und Slots einmal überprüfen lassen.
http://doc.trolltech.com/4.3/qcoreappli ... cessEvents

Ist zwar "static", aber ich habe keine Ahnung ob das auch ohne definierte QCoreApplication funktioniert...

Verfasst: 11. August 2008 10:14
von Antis_81
Hallo,

hm, damit habe ich mich auch schon einige Male rumgeärgert.

Ist nur eine Idee, kein Erfolg garantiert, aber probier mal:

connect(socket, SIGNAL(readyRead()), SLOT(ev_read()), Qt::DirectConnection);

Damit sollte das Signal direkt an deine Socketklasse geleitet werden, ohne Eventloop. Bei mir hat's funktioniert. :)

Re: Anwendung ohne QApplication

Verfasst: 11. August 2008 10:59
von Nash
kallitokaco hat geschrieben:Hi

ich arbeite mit QT und OGRE, daher muss ich die eventschleife/Renderschleife von OGRE laufen lassen und kann kein QApplication.exec() ausführen. Soweit kein Problem, alles klappt ganz normal.
Weil du die Renderschleife von OGRE aufrufen musst, kannst du kein QApplication.exec() ausführen? versteh ich nicht...