[eaf] Re: Fa-probléma

  • From: Kovács Gábor <zonder@xxxxxxxxxxxxxxxxxxxx>
  • To: eaf@xxxxxxxxxxxxx
  • Date: Fri, 05 Sep 2008 07:09:01 +0200

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/


Other related posts: