Kanyó Kristóf Milacski Zoltán EVA – 3. óra Kanyó Kristóf Milacski Zoltán
Kasztolás (Leírás) Az eseménykezelő segítségével meg tudtuk oldani, hogy egy objektumhoz valamilyen signal hatására (pl.: click) hozzárendeltünk az eseménykezelőt Az eseménykezelőnk pedig módosította a megadott gombnak a tartalmát Mi van akkor, ha több gombunk is van, és az összesre ugyanazt az eseménykezelőt szeretnénk rákötni úgy, hogy annak a gombnak a tartalmát módosítsa amelyikre rákattintottunk? Megoldás: sender() - függvénnyel lekérni a küldő objektumot qobject_cast<típus>(változó) – segítségével konvertálni a megfelelő típusra
Kasztolás (Header)
Kasztolás (Source)
Kasztolás (Run)
Időzítő (Leírás) Sok feladat megoldásához szükség van az időzítő használatára: Mérni az időt Az ellenfél adott időközönként lép ... Időzítőnél meg kell adni, hogy az időzítő objektum hány ezredmásodpercenként jelezzen Majd az időzítő timeout() signal-hoz hozzá kell rendelni egy eseménykezelőt Start() – tal lehet elindítani az időzítőt Stop() – pal lehet leállítani
Timer (Header)
Timer (Source)
Timer (Run)
Küldő objektum megkeresése (Leírás) Gyakran van szükség arra, hogy meg tudjuk határozni, hogy az adott objektum a vektorban hol helyezkedik el Pl.: tudni akarjuk, hogy az adott gomb, amelyre rákattintottunk a rácsban hányadik sorban és hányadik oszlopban helyezkedik el 1. megoldás: A qobject_cast<QPushButton*>(sender()) segítségével meghatározzuk a küldő QPushButton-t Majd lineáris kereséssel megkeressük a vektorban az adott gombot Hátránya: Sok objektum esetén nagy a keresés műveletigénye
Küldő objektum megkeresése (Header)
Küldő objektum megkeresése (Source-1)
Küldő objektum megkeresése (Source-2)
Küldő objektum megkeresése (Run)
Saját PushButton (Leírás) Gyakran van szükség arra, hogy meg tudjuk határozni, hogy az adott objektum a vektorban hol helyezkedik el Pl.: tudni akarjuk, hogy az adott gomb, amelyre rákattintottunk a rácsban hányadik sorban és hányadik oszlopban helyezkedik el 2. megoldás: Hozzunk létre egy saját PushButton-t, amely a QPushButton-on felül eltárolja a sort és az oszlopot is
Saját PushButton (mypushbutton.h)
Saját PushButton (mypushbutton.cpp)
Saját PushButton (widget.h)
Saját PushButton (widget.cpp)
Saját PushButton (Run)
MessageBox(Leírás) Az egyik legegyszerűbb módja a felhasználó tájékoztatására Több fajtája van: Question Information Warning Critical Több féle gombot lehet elhelyezni rajta: Yes No Cancel … Könnyen lekezelhető, hogy melyik gombra kattintott a felhasználó
MessageBox (Header)
MessageBox (Source - 1)
MessageBox (Source - 2)
MessageBox (Run)
SaveFileDialog(Leírás) Segítségével a felhasználó meg tudja adni a file mentési útvonalát és a file nevét Meg lehet adni, hogy milyen kiterjesztések közül tudjon választani a felhasználó A dialog csak az útvonalat adja vissza, arról külön kell gondoskodni, hogy el is mentse a file-t
SaveFileDialog (Header)
SaveFileDialog (Source)
SaveFileDialog (Run)
OpenFileDialog(Leírás) Segítségével a felhasználó meg tudja adni a file betöltési útvonalát és a file nevét Ellenőrzi is, hogy létezik-e a file Meg lehet adni, hogy milyen kiterjesztések közül tudjon választani a felhasználó A dialog csak az útvonalat adja vissza, arról külön kell gondoskodni, hogy be is töltse a file-t
OpenFileDialog (Header)
OpenFileDialog (Source)
OpenFileDialog (Run)
Mini Program (Leírás) Hozzunk létre egy olyan programot, amely létrehoz n x n méretű gombrácsot (10, 15, 20) A gombok kezdeti szövegei üresek Ha egy üres gombra kattintunk rá, akkor az értéke legyen 0 Ha nem egy üres gombra kattintunk rá, akkor az értékét növeljük 1- el Ha egy gomb értéke eléri a 10-et, akkor az értéke legyen újra 0 Új játék kezdésénél gondoskodjunk az előző pálya törléséről
Mini Program (Megvalósítása) Mellékelve
Köszönöm a figyelmet!