Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : KDE/QT slots



microdigi
10-09-2002, 09:46
KDE/QT slots:

es geht darum, aus einem gui (mit qt erstellt) mit zwei mutual exclusiven radio buttons jeweils eine funktion in der kde-application 'on the fly' auszufuehren.

ich kann vom qt-designer (3.0) offensichtlich kein object beim signal uebergeben.
wenn ich im qt-designer ein signal erstelle von einem object
(sagen wir mal einem radiobutton), dann wuerde ich dort natuerlich
auch gern das object (class) spezifizieren,
welches an die slot-methode uebergeben werden soll.
leere signale (und empfangende 'leere' slots) kann ich generieren,
und die funktionieren auch.
aber das nuetzt mir nichts; denn ich brauche bei der slot-methode
auch das gewuenschte object (welches aber bei qt zu dem zeitpunkt
offensichtlich nicht bekannt ist.
es handelt sich um die ueberlagerte 'body'-class der application,
welche in der spaeteren 'main.cpp' als instance erzeugt wird.
natuerlich kenne ich deren kontruktion (also die *.h).

ich kann aber keine objecte im qt-designer anziehen,
welche erst beim kde compilieren entstehen werden.
eine loesung waere, beim slot das betreffende (urspruenglich
als mitgebracht angenommene object) herauszufinden.
aber wie? :confused:

wo gibt es information?
nach einigen tagen fruchtlosen suchens und probierens
bleibt mir nur dieser weg. :mad:

fuer jeden sinnvollen hinweis bin ich dankbar.

gruss - digi,der auch danke anschliesst...

anda_skoa
10-09-2002, 10:32
Ein Slot bekommt nur Objekte, die im Signal enthalten sind.

Die Radiobuttons haben sicher kein Signal, dass eines deiner Klassen als Parameter hat.

Du hast mehr oder weniger folgende Möglichkeiten.

1) In der Klasse, die die RadioButtons enhält, hast du fü jeden RadioButton einen Slot, der mit zB dem toggled(bool) SIgnal des RB connected ist.
In diesem slot emittest du ein eigenes Signal, dass dann so ein Objekt als Parameter hat.

Du kannst da für jeden RB ein eigenes Signal mache, oder in deinem Signal einen Parameter zu Unterscheidung mitgeben.

2) Wenn von dem Object nur eine Instanz im Programm besteht, könnte man in den Parameterlosen slots (bzw mit Parameten die in RadioButton Signals vorkommen) einfach auf diese Instanz zugreifen.
Zum Beispiel über eine Methode (Singleton Pattern) oder über eine vorher gestetzte Variable, oder über eine globale Variable.

3) Du erzeugst eine Subklasse von RadioButton und spendierts dieser Klasse ein entsprechendes Signal.
Allerdings weiß ich nicht, wie diese Methode mit Qt Designer zusammenspielt.

Ciao,
_

microdigi
10-09-2002, 16:59
hallo, 'anaconda' :)
so aehnlich hab ich mir das durchaus vorgestellt.
ich dachte halt, es gaebe eine einfache(re) moeglichkeit.
was ich einfach nicht glauben wollte, mittlerweile aber einsehe,
ist wohl, dass da kein so einfacher 'zusammenhang' zwischen dem
qt-designer und den qt-libraries besteht;
die kann man ja einfach so in den kde-ide einbinden.

naja mal sehen wie lange ich dann noch dran rumknobele.
das prinzip hatte ich schon verstanden,
und wie gesagt, ein 'leeres' signal mit 'leerem' slot krieg ich ja hin.
und den 'rest' werd' ich auch noch buegelen.

gruss und dank - von digi
der natuerlich das ergebnis hier vorbeibringt.