[Megoldva:] Qt4: Child widgetek visszanyerése

 ( pelz | 2008. augusztus 9., szombat - 14:33 )

Sziasztok!

Van három QFrame objektumom egy MyDialog objektumon belül. Ezeken belül vannak QRadioButton objektumok és egy QLineEdit objektum. Egy a QFrame-t szertnék átadni egy eljárásnak, aminek ki kellene derítenie a QFrame-en belüli információkat. Tehát meg kellene tudnia határoznia a RadioButton-ok állapotát, és hogy mi szerepel a LineEdit-ben. Mind a három Frame objektum teljesen ugyanolyan felépítésű, tehát bármelyiket is kapja meg a függvény, ugyanazt kell csinálnia. Ugyanakkor a függvény nem látja a Frame-en belüli objektumokat közvetlenül, csak azt tudja, hogyan kell felépülnie a Frame-nek.

Előre is kösz!

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Igazán egyszerű a válasz: a QFrame::children() függvény visszaadja a child objektumok listáját beszúrási sorrendben.

Bocs a hülye kérdésért! (Előbb a doksit kellett volna megnéznem.)

Igazából a kérdésfeltevés is rossz.

Hiszen rögtön felmerül a kérdés, hogy a QObject::children (mert valójában az) QObject mutatókat ad vissza, akkor hogy is lesz ebből QLineEdit?

És már alakul is egy if-es dynamic_cast-os szerkezet, ami minden csak nem szép, nem OOP, nem C++.

A megoldás nem ez, hanem pl egy MyFrame objektum (illetve ennél értelmesebb elnevezés kéne :) ).
Itt vagy megírod a különböző getter fv-eket (pl. getLineEditText de méginkább értelmes fv-nevek, ami utal a LineEdit tartalmára (getFirstName stb.)), és a MyFrame-et adod át a megfelelő fv-nek ami MyFrame-et is vár, vagy már azt a bizonyos fv-t is a MyFrame-en belül implementálod.

"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee."
-- Ted Ts'o

Úgy látom, van egy kis rutinod a dologban. Tényleg sokkal jobb a te megoldásod.

Kösz!
Most már tényleg meg van oldva!