Am Montag, 17. März 2003 18:27 schrieb Stefan Hundhammer:
Du mußt natürlich darauf achten, daß die meisten Konstruktoren ausgeführt werden, bevor Du in main() an die Stelle kommst, wo Du setMainWidget() aufrufst - das macht man ja üblicherweise, nachdem das Haupt-Widget erzeugt ist, das dann wieder seinserseits meistens etliche andere Widgets erzeugt u.s.w.; wahrscheinlich hast Du ein Reihenfolgenproblem.
Überprüf' das mal! Schreib' einfach in die diversen Konstruktoren eine Ausgabe nach stdout oder stderr und auch an die Stelle, wo Du setMainWidget() aufrufst, dann siehst Du, was wann drankommt.
Habe ich gemacht und ich habe in der Tat ein Reihenfolgeproblem. Am Montag, 17. März 2003 18:46 schrieb Stefan Hundhammer:
P.S.: Wenn Du ein Reihenfolgeproblem hast, hilft oft QTimer::singleShot() weiter - Du schreibst dann den Teil, der später drankommen muß, in einen eigenen Slot, der dann aufgerufen wird, sobald Qt in die Hauptschleife kommt (QAPPlication::exec()) - dann ist üblicherweise alles initialisiert.
Falls ich das, was später ausgeführt werden soll in einen extra Slot schreibe, funktioniert es auch ohne QTimer. Kann es sein, dass immer nur der erste Slot ausgeführt wird Slots in diesem Slot nicht mehr? Das ist nämlich bei mir so. Der zeite Slot kommt erst dran, wenn ich darauf zugreife --> also funktioniert es. Habe aber trotzdem noch eine kleine Frage zu QTimer: WIe prüfe ich denn, wann a.exec() ausgeführt wird? Es siehgt ja so z. B. aus: QTimer::singleShot( 1000, &a, SLOT(quit()) ); Anstelle der Zeit (1000) brauche ich doch ein Signal, oder? Application::exec() ist aber ja keines. Wie realisiere ich das dann? Danke Holger -- Ich bin nicht sicher, mit welchen Waffen der dritte Weltkrieg ausgetragen wird, aber im vierten Weltkrieg werden sie mit Stöcken und Steinen kämpfen. --Albert Einstein