Szia! Első megközelítésben olyan osztályt csinálnék minden csomóponthoz, ami a következőket tudja: Megnézi, hogy a bal és a jobb részfája egyezik e. (gondolom a részfák sorrendje mindegy, így csak szint folytonos ellenőrzés kell, ha nem, akkor meg teljesen egyezni kell a felépítésnek) Ezen felül ebbe az osztályba raknám a kirajzolást is (legalább is az elhelyezés kiszámolását), ami annyit tenne, hogy minden csúcsra meghatározná az elhelyezkedést, így az összecsúszásokat könnyebben lehetne kezelni, mert az adott szint határozná meg hogy alatta mi van. A kijelölést szintén ez az osztály látná el, így minden csúcs tudná hogy ki van e jelölve, ha igen, akkor akár rekurzívan a gyerekei felé leküldheti hogy ők is ki vannak jelölve. Persze a kirajzolást és a logikai réteget lehet hogy nem ártana szétválasztani, a könnyebb kezelhetőség érdekében, így lehet hogy nem lenne akkora a terhelés, hiszen a kirajzolást csak egy osztály végzi, amit akkor hívsz meg amikor akarsz. Ezen felül megnézném a következő oldalakat: http://www.potu.com/man/doc.trolltech.com/4.0/qtreeview.html http://www.potu.com/man/doc.trolltech.com/4.0/qtreewidget.html http://www.potu.com/man/doc.trolltech.com/4.0/qtreewidgetitem.html 2008. 08. 18, hétfő keltezéssel 22.22-kor Péntek Imre ezt írta: > Sziasztok! > > A csatolt forrással kapcsolatban lennének kérdéseim: > A progi zárójelezett prefix jelölésben megadott (main.cpp:9) tetszőleges fát > jelenít meg: > > START->részfa > részfa->(gyökércímke részfa-lista) > részfa->levélcímke > részfa-lista->részfa > részfa-lista->részfa részfa-lista > > Az a baj vele, hogy folyamatosan 100%-on pörgeti a processzort (szerintem az > update() folyamatosan triggerelődik, csak azt nem értem miért végtelenszer), > ettől még az event loop is fut, de akkor sem kellemes. Hogyan tudnám ezt > kiküszöbölni? > > Ez idáig teljesen témába vágott, a következő már nem annyira, de hátha tudtok > segíteni: > > Mint látszik a fenti nyelvtanból is, a fát közös gyökérrel ellátott > részfákként képzelem el, ez megjelenik a kódban is, minden visualTree > QVector<visualTree *> tömbként tartja nyilván (visualtree.h:19) részfáit > (annak gyökereit). Ennek eredményeképp egész kényelmes volt a jelenlegi kódot > összerakni, hátrányként a fák nagyon hamar elterebélyesednek, a csatolt > kódban megjelenített fa is megjeleníthető lenne kisebb szélességben, jelenleg > ugyanis az "alma" levél a "korte" köztes csúcs mellé csúszhatna, megjelenési > szempontból nem tudom fognak-e zavart okozni az egymást félig áfedő > QWidgetek, illetve honnan tudom megállapítani, hogy a két fa > összecsúsztatható-e, és mennyire. > > Példaként (r (y x x) (y x x) fa nem csúsztatható össze, > (r (y x x) (y (y x x) (y x x))) viszont összecsúsztatható volna. > > Szóval ergonómikus, ámde helytakarékos famegjelenítésre vágynék, van > ötletetek? Elvileg beépített osztály is megteszi, később majd szeretnék > szerkesztést (részfa törlés, beszúrás, kijelölt részfa szülő-részfájának > felülírása a kijelölt részfával, címke módosítás), szeretnék csúcsokat > megjelölni (dölt, félkövér, spec színű háttér, lényeg az, hogy ne csak egy > féleképp tudjak megjelölni), esetleg gyökérből induló utakat megjelölni. > > Előre is köszönöm a válaszokat. -- "Amit akartok, hogy veletek tegyenek az emberek, ti is tegyétek velük." /Mt/