Seite 1 von 1

connect funktioniert nicht

Verfasst: 17. April 2009 18:04
von TK
Hallo Leute,

ich habe ein Widget A, was ich mit show() anzeigen lassen. In A wird über eine Funktion ein Widget B instanziiert. B besitzt ein Button. Jetzt lasse ich über eine weitere Funktion von A den Button von B über ein Layout in A anzeigen, mit addWidget(B->Button). Das geht. Doch wenn ich auf den Button klicke, soll sich die Anwendung schließen (connect(Button, SIGNAL(clicked()), this, SLOT(close()));). Das geht nicht. Warum?

Warum ich das so mache hat folgenden Grund. Ich habe das Widget A, welches mir verschiedene weitere Widgets erzeugt. Diese Widgets haben Buttons TextEdits usw. Doch das Layout für die verschieden Widgets, mit den Buttons, soll über Widget A gesetzt werden. Widget A besitzt also für jedes "SubWidget" ein eigenes Layout. Wie findet ihr das Vorgehen? Das schreit eher nach StackedLayout, aber all die Beispiele, die ich gesehen habe laufen über eine Liste, aus der man einen Eintrag auswählt, und sich dann links oder rechts der Inhalt verändert, jedoch die Liste immer bleibt. Das will ich ja eben nicht.

Danke für die Hilfe

LG TK

Verfasst: 17. April 2009 19:16
von solarix
das ganze klingt ziemlich haesslich... vor allem das "addWidget(B->Button)" .. und haessliche Designs neigen dazu, nicht zu funktionieren :wink:

Aber zurueck zum Problem: Du liefest noch etwas wenig Information/Code... offenbar rufst du den connect(...) vom Child (Widget "B") auf. Daher die Fragen:
* Was erwartet du denn? (Soll auch der Parent (Widget A)) geschlossen werden?
* Was bedeutet "Funktioniert nicht"? Erhaelst du irgendwelche Fehlermeldungen in der Konsole?

Verfasst: 17. April 2009 19:40
von TK
Hey,

jaaa, es klingt hässlich? Oh, hm. :( Wie würde es dennf hübsch und funktionierend klingen?

Was erwartet du denn? (Soll auch der Parent (Widget A)) geschlossen werden?
Ja.
Was bedeutet "Funktioniert nicht"? Erhaelst du irgendwelche Fehlermeldungen in der Konsole?
Keine Fehlermeldungen. Der Klick auf den Button bewirkt nichst.

Aber, wenn du meinst, dass dieses Konzept eh nichts taugt, würde ich lieber eine andere Strategie verfolgen.
Denke da noch an folgendes. Ich instanziiere einfach aus Widget A die verschiedenen anderen Widgets, z.b. B, und es wird einfach Widget A mit hide() versteckt und wenn ich wieder auf zurück klicke von Widget B, wird dieses gelöscht und Widget A wird wieder angezeit. Das ist besser oder :?:

Verfasst: 18. April 2009 09:42
von Christian81
connect() hat auch einen Rückgabewert - was sagt der?

Verfasst: 18. April 2009 11:34
von TK
Liefert false zurück. Aber ich verfolge das Problem nicht mehr, da ich nun einen anderen Ansatz habe. Von daher, Wayne.
Trotzdem, Danke :D

Verfasst: 18. April 2009 11:36
von Christian81
Wenn er false zurückliefert erübrigt sich ja die Frage warum es nicht geht...

Verfasst: 18. April 2009 13:46
von TK
stimmt