Qt rajzolás munkafüzet. Elemi Alkalmazások fejlesztése 3.
|
|
- Jázmin Papné
- 7 évvel ezelőtt
- Látták:
Átírás
1 Qt rajzolás munkafüzet Elemi Alkalmazások fejlesztése 3.
2
3 1. fejezet Impresszum Qt rajzolás munkafüzet (C)2006 Zimler Attila Tamás Visszajelzéseket szivesen fogadok. A munkafüzet online formában a következ címen található: A dokumentum generálásának dátuma: május 10.
4 2 Impresszum
5 2. fejezet Bevezet Formátumok class Example { /* Ez egy példa kódrészlet */ ; # Egy parancssori utasítás így néz ki (a # a prompt jel). függvény() Ez a jelölésmód azonban nem a függvény szignatúra helyes írásmódja! (El fordulhat, hogy van paramétere a függvénynek, de ez nem kerül kiírásra.) változó Ez egy változó jelölése. Az állományok jelölése ezen a módon lesz megvalósítva. Megjegyzések ˆ El fordulhat, hogy a Qt környezet speciális beállításokat igényel az adott gépen, a.pro állományban. Ehhez további segítség: exercise3.html. Amennyiben így kell használni a Qt-t, akkor az összes "qmake -project" parancs kiadása után újra be kell állítani ezeket a speciális dolgokat a.pro állományban. ˆ A hosszabb programrészletekben az alábbi formátumú megjegyzések lesznek, ezeknek a helyzete nem változik, miután belekerültek a kódba. (Tehát ezekhez képest lehet viszonyítani, hogy milyen kódot hová kell írni, és ezért a kód változatlan részletei elhagyhatóak.) /* határolósor */ ˆ A harmadik feladatsortól kezdve mindegyik feladat után le lehet fordítani a programot és meg lehet nézni a futását (ezért nincs is már odaírva a feladatok megoldásához, hogy tegyük ezt meg). A fordítást a következ paranccsal tehetjük meg: # make
6 4 Bevezet
7 3. fejezet A Qt grakai rendszere A Qt grakai rendszere több komponens együttm ködéséb l áll. A graka során nem közvetlenül a rajzfelületre rajzolunk, hanem egy logikai térbe. A logikai tér a rajzfelületre több lépcs ben képz dik, nem feltétlenül az alábbi sorrendben (viszont az eredmény ugyanaz lesz). 1. A logikai tér koordinátái átalakításra kerülnek, így tetsz leges helyre helyezhetjük a logikai térben az origót. 2. A logikai tér egy transzformációs mátrix segítségével átalakításra kerül, így az ábrát kirajzolás el tt forgathatjuk és eltolhatjuk ábra. A Qt rajzolási rendszere. Ennek a rendszernek több el nye is van: ˆ Fix koordinátákat rakhatunk a rajzunkba, és az ablak átméretezésénél ez nem fog problémát okozni. ˆ Eltolhatjuk a rajz közepére az origót, ha az nekünk úgy kényelmes. ˆ Elforgathatjuk (akár többször is) a rajzfelületet a rajzolás el tt. Ebb l következik, hogy egy kényelmetlen szögben rajzolás helyett, bármilyen állapotban megrajzolhatjuk az ábrát. Ezután elforgatva az ábrát az eredmény az lesz, mintha a kényelmetlen szögben rajzoltunk volna (persze nehézkes számítások nélkül). ˆ A leképezésnek a logikai és a zikai rajzfelület között nem szükséges, hogy vízszintes és függ leges arányban is ugyanolyan arányú legyen.
8 6 A Qt grakai rendszere
9 4. fejezet A feladatsorozat célja A munkafüzetben a feladatsorok folyamán egy grakus óra programot fogunk létrehozni. A program a következ tulajdonságokkal fog rendelkezni: ˆ Az aktuális id t fogja mutatni a program. ˆ Az ablak átméretezésekor arányosan nagyítjuk a rajzot. ˆ Kiküszöböljük a villogást az ábrákon ábra. A cél
10 8 A feladatsorozat célja
11 5. fejezet Alap Qt program létrehozása 1. Hozzunk létre egy main() függvényt és fordítsuk le! Tipp Ne felejtsük el, hogy a Qt alkalmazás elindításához a main() függvény két paraméteres formájára lesz szükségünk. (a) Hozzuk létre az alábbi tartalmú main.cpp állományt: int main(int argc, char* argv[]) { (b) Állítsuk el a qmake.pro állományát: # qmake -project (c) Fordítsuk le a programot: # qmake # make 2. Hozzunk létre egy f ablakot és jelenítsük meg a main() függvényb l! (A f ablak osztályának a munkafüzet a MainWnd nevet adja.) Tippek (a) A következ fejléc állományokra lesz szükség: ˆ qmainwindow.h: a f ablak származtatásához. ˆ qapplication.h: a Qt f program létrehozásához. (b) A f ablak osztályának deklarációját (.h) és denícióját (.cpp) mindenképpen két külön állományba kell rakni, mert különben a qmake nem fog rendesen m ködni, ha a meta object compiler-t (moc) kell futtatnia. (c) Ne felejtsük el a Q_OBJECT makrót a f ablak osztályából. (d) Jelenleg elég ha a f ablak csak egy üres konstruktort tartalmaz. (e) Könnyen elérhetjük, hogy a f ablak becsukására a program megálljon, ha használjuk a QApplication::setMainWidget() metódusát. (f) Mivel extra állományokat adtunk a projekthez, ezért a projekt állományt aktuálizálni kell. Ezt két módon tehetjük meg:
12 10 Alap Qt program létrehozása ˆ a HEADERS konstanshoz hozzáadjuk az új fejléc állományokat, a SOURCES konstanshoz hozzáadjuk az új.cpp állományokat. Amennyiben bármelyik nem létezik, létrehozzuk. ˆ Újrageneráljuk a.pro állományt: # rm -f *.pro # qmake -project Megjegyzés: Ne felejtsük el a Makele állományt újragenerálni. # qmake (a) Hozzuk létre az alábbi tartalmú mainwnd.h állományt: #ifndef MAINWND_H #define MAINWND_H #include <qmainwindow.h> class MainWnd : public QMainWindow { Q_OBJECT public: MainWnd(); ; #endif /* MAINWND_H */ (b) Hozzuk létre az alábbi tartalmú mainwnd.cpp állományt: #include "mainwnd.h" MainWnd::MainWnd() { (c) A main.cpp állományt módosítsuk, hogy a következ képpen nézzen ki: #include "mainwnd.h" #include <qapplication.h> int main(int argc, char* argv[]) { QApplication app(argc, argv); MainWnd mw; mw.show(); app.setmainwidget(&mw); app.exec(); (d) Generáljuk újra a.pro állományt: # rm -f *.pro # qmake -project (e) Fordítsuk le a programot. # qmake # make 3. Hozzunk létre a QWidget osztályból származtatással egy egyedi widget-et és azt helyezzük el a f ablakon! (Ez az osztály a munkafüzetben a Clock nevet viseli.) Tippek (a) Ne felejtsük el, hogy a QWidget nem rendelkezik nulla paraméterszámú konstruktorral, hanem alapértelmezett értékei vannak a konstruktorának.
13 11 (b) A f ablak adattagjai közé mutató formában vegyük fel az újonnan létrehozott widget típust. (c) A QMainWindow::setCentralWidget() metódus segítségével rakhatjuk a f ablakra az objektumot. (d) Ne felejtsük el a f ablakot kiegészíteni egy destruktorral, ahol az egyedi widget objektumot megsemmisítjük. (e) Ne felejtsük el a Q_OBJECT makrót. (f) Ne felejtsük el módosítani a.pro állományt. (a) Hozzuk létre az alábbi clock.h állományt: #ifndef CLOCK_H #define CLOCK_H #include <qwidget.h> class Clock : public QWidget { Q_OBJECT public: Clock(QWidget* parent = 0, const char* name = 0, WFlags f = 0); ; #endif /* CLOCK_H */ (b) Hozzuk létre az alábbi clock.cpp állományt: #include "clock.h" Clock::Clock(QWidget* parent, const char* name, WFlags f) : QWidget(parent, name, f) { (c) Vegyünk fel egy privát _clock adattagot a MainWnd osztályba és szerkesszük be a clock.h fejlécállományt. Ennek eredményeképpen a következ képpen kell kinéznie a mainwnd.h állománynak: #ifndef MAINWND_H #define MAINWND_H #include <qmainwindow.h> #include "clock.h" class MainWnd : public QMainWindow { Q_OBJECT Clock* _clock; public: MainWnd(); ~MainWnd(); ; #endif /* MAINWND_H */ (d) Helyezzük a f ablakra az objektumot. Ehhez módosítsuk a MainWnd osztály konstruktorát: MainWnd::MainWnd() { setcentralwidget(_clock = new Clock(this));
14 12 Alap Qt program létrehozása (e) Írjuk meg a MainWnd osztály 3. pontjában már bevezetett destruktorát: MainWnd::~MainWnd() { delete _clock; (f) Generáljuk újra a.pro állományt és fordítsuk le a programot: # rm -f *.pro # qmake -project # qmake # make
15 6. fejezet A rajzolást végz kód el készítése 1. Hozzunk létre egy _draw() metódust a Clock osztály számára! (a) Módosítsuk a clock.h állományt, hogy a következ képpen nézzen ki: #ifndef CLOCK_H #define CLOCK_H #include <qpainter.h> #include <qwidget.h> // új sor class Clock : public QWidget { Q_OBJECT void _draw(qpainter* painter); // új sor public: Clock(QWidget* parent = 0, const char* name = 0, WFlags f = 0); ; #endif /* CLOCK_H */ (b) A clock.cpp állományban hozzuk létre a következ metódust _draw() metódust: void Clock::_draw(QPainter* painter) { /* Változók deklarálása */ /* Az alap megrajzolása */ /* A vonalak megrajzolása */ /* A számok elhelyezése az óralapon */ /* A nagymutató megrajzolása */ /* A kismutató megrajzolása */ /* A másodperc mutató megrajzolása */ /* Újabb frissítés ütemezése */ Megjegyzés: A _draw() implementációját a következ fejezetekben adjuk meg, most csak a gerincét hozzuk létre. (c) Fordítsuk le a programot. # make 2. Deniáljuk felül a Clock osztályban a QWidget::paintEvent() metódusát, és ebb l hívjuk meg a _draw() metódust! Tippek
16 14 A rajzolást végz kód el készítése (a) Hozzuk létre a QPainter objektumot. (b) Válasszuk ki a kisebbik méretet, hogy arányosan tudjuk megjeleníteni a rajzot. (c) Állítsuk be a koordinátarendszert. (d) Hívjuk meg a rajzolást végz rutint (_draw()). (a) Módosítsuk a clock.h állományt úgy, hogy a következ képpen nézzen ki: #ifndef CLOCK_H #define CLOCK_H #include <qpainter.h> #include <qwidget.h> class Clock : public QWidget { Q_OBJECT void _draw(qpainter* painter); void paintevent(qpaintevent* event); // új sor public: Clock(QWidget* parent = 0, const char* name = 0, WFlags f = 0); ; #endif /* CLOCK_H */ (b) Valósítsuk meg a következ Clock::paintEvent() metódust: void Clock::paintEvent(QPaintEvent*) { /* Kett s pufferelés el készítés */ /* A QPainter objektum létrehozása */ QPainter painter(this); /* A rajzoló rutin meghívása */ int side = QMIN(width(), height()); painter.setviewport( (width() - side) / 2, (height() - side) / 2, side, side ); painter.setwindow(-50, -50, 101, 101); _draw(&painter); /* A kett s pufferelés ábrájának kihelyezése */ (c) Fordítsuk le a kódot: # make
17 7. fejezet A rajzolást megvalósító kód 1. Rajzoljuk meg az óra alapját! Tippek (a) Állítsuk be a ceruzát fehérre. (b) Állítsuk be a kitöltést fehérre. (c) Rajzoljuk meg a kört a QPainter::drawEllipse() metódussal. (a) Írjuk át a Clock::_draw() metódus fejlécét a clock.cpp állományban, hogy a következ módon nézzen ki: void Clock::_draw(QPainter* painter) (b) Adjuk hozzá a Clock::_draw() metódushoz a következ részletet: /* Az alap megrajzolása */ painter->setpen(qpen(white, 1, SolidLine)); painter->setbrush(qbrush(white, SolidPattern)); painter->drawellipse(-50, -50, 101, 101); /* A vonalak megrajzolása */ 2. Húzzuk meg a 12 óra értékhez tartozó függ leges vonalat! Tippek (a) Állítsuk a ceruzát feketére. (b) Húzzuk meg a vonalat a QPainter::drawLine() metódussal. Illesszük a következ kódot a Clock::_draw() metódusba: /* A vonalak megrajzolása */ painter->setpen(qpen(black, 1, SolidLine)); painter->drawline(0, -50, 0, -47); /* A számok elhelyezése az óralapon */
18 16 A rajzolást megvalósító kód 3. Rajzoljuk meg az összes vonalat! Tippek (a) Vegyük fel egy QWMatrix típusú objektumot a Clock::_draw() metódusba. (b) Ismételjük meg 60-szor a következ három lépést: i. Húzzunk egy vonalat, ahogy azt az el z feladatban tettük (pontosan ugyanazokkal a koordinátákkal). ii. Forgassuk a QWMatrix objektumot 6 fokkal. iii. Állítsuk be a módosított QWMatrix objektum segítségével a QPainter world- Matrix-át ( QPainter::setWorldMatrix()). (a) Vegyünk fel egy QWMatrix típusú mátrixot a Clock::_draw() metódusba: /* Változók deklarálása */ QWMatrix matrix; /* Az alap megrajzolása */ (b) Alakítsuk át a vonalak rajzolását a következ re: /* A vonalak megrajzolása */ for (int i = 0; i < 60; ++i) { painter->setpen(qpen(black, 1, SolidLine)); painter->drawline(0, -50, 0, -47); matrix.rotate(6); painter->setworldmatrix(matrix); /* A számok elhelyezése az óralapon */ 4. Legyen minden ötödik vonal vastagabb és hosszabb! Alakítsuk át a Clock::_draw() metódusát a következ módon: /* A vonalak megrajzolása */ for (int i = 0; i < 60; ++i) { // vastag vagy vékony vonal kell? painter->setpen(qpen(black, i % 5 == 0? 3 : 0, SolidLine)); // rövid vagy hosszú vonal kell? painter->drawline(0, -50, 0, i % 5 == 0? -45 : -47); // 6 fokonként egy-egy vonal, összesen 60 vonal. matrix.rotate(6); painter->setworldmatrix(matrix); /* A számok elhelyezése az óralapon */ 5. Helyezzük el a 12-es feliratot az óralapon! Tippek
19 17 (a) A QPainter::drawText() metódusai között van egy olyan, amelynek meg lehet adni a befoglaló négyzeten belül a szöveg igazitását. (b) A QString típusnak van egy setnum() metódusa, aminek segíségével egy számot könnyen szöveggé lehet alakítani. (c) Körülményes végiggondolni, hogy az el z feladat megoldása során a QPainter world- Matrix tulajdonsága milyen állapotban maradt. Egyszer bb lehet alaphelyzetbe állítani. Alakítsuk a következ re a Clock::_draw() metódust: /* A számok elhelyezése az óralapon */ QString text; matrix.reset(); painter->setworldmatrix(matrix); text.setnum(12); painter->setpen(qpen(blue, 0, SolidLine)); painter->drawtext( -10, -45, 20, 20, Qt::AlignHCenter Qt::AlignVCenter, text ); /* A nagymutató megrajzolása */ 6. Helyezzük fel az összes számot! Tipp A QWMatrix::map() metódus segítségével koordinátákat transzformálhatunk a logikai térben. A Clock::_draw() megfelel részlete: /* A számok elhelyezése az óralapon */ QString text; matrix.reset(); painter->setpen(qpen(blue, 0, SolidLine)); painter->setworldmatrix(matrix); const int cx = 0; // x irányú közepe a szövegnek const int cy = -35; // y irányú közepe a szövegnek const int tw = 10; // A szöveg szélessége (valójában / 2) const int th = 10; // A szöveg magassága (valójában / 2) for (int i = 3; i < 13; i += 3) { int tcx, tcy; // átalakított cx, cy matrix.rotate(90); matrix.map(cx, cy, &tcx, &tcy); text.setnum(i); painter->drawtext( tcx - tw, tcy - th, tw * 2, th * 2, Qt::AlignHCenter Qt::AlignVCenter, text ); /* A nagymutató megrajzolása */
20 18 A rajzolást megvalósító kód 7. Hozzunk létre a Clock osztály számára egy _drawarrow() metódust, amely paraméterben megkapja a QPainter objektumot és a mutató hosszát! Ezután rajzoljuk meg a mutatót és a mutató hegyét! (a) Az új clock.h állomány tartalma: #ifndef CLOCK_H #define CLOCK_H #include <qpainter.h> #include <qwidget.h> class Clock : public QWidget { Q_OBJECT void _draw(qpainter* painter); void _drawarrow(qpainter* painter, int length); // új sor void paintevent(qpaintevent* event); public: Clock(QWidget* parent = 0, const char* name = 0, WFlags f = 0); ; #endif /* CLOCK_H */ (b) A Clock::_drawArrow() metódus: void Clock::_drawArrow(QPainter* painter, int length) { /* A ceruza és az ecset beállítása */ painter->setpen(qpen(black, 1, SolidLine)); painter->setbrush(qbrush(black, SolidPattern)); /* A mutató hegyének megrajzolása */ QCOORD triangle[3][2] = { { -3, -length + 10, { 0, -length, { 3, -length + 10 ; painter->drawconvexpolygon(qpointarray(3, &triangle[0][0])); /* A mutató szárának megrajzolása */ (c) A Clock::_draw() metódus szükséges módosítása: /* A nagymutató megrajzolása */ matrix.reset(); painter->setworldmatrix(matrix); _drawarrow(painter, 45); /* A kismutató megrajzolása */ 8. Hozzuk létre a mutató szárát. Tipp Rajzoljuk meg a kört a mutató szárának végére, hogy szépen nézzen ki. Alakítsuk át a következ re a Clock::_drawArrow() metódust: /* A mutató szárának megrajzolása */ QCOORD box[4][2] = { { -1, -length + 10, { 1, -length + 10, { 1, 0, { -1, 0
21 19 ; painter->setpen(qpen(black, 1, SolidLine)); painter->setbrush(qbrush(black, SolidPattern)); painter->drawconvexpolygon(qpointarray(4, &box[0][0])); painter->drawellipse(-1, -1, 3, 3); 9. Rajzoljuk meg a kismutatót. A Clock::_draw() metódust kell módosítani: /* A kismutató megrajzolása */ matrix.reset(); painter->setworldmatrix(matrix); _drawarrow(painter, 30); /* A másodperc mutató megrajzolása */ 10. Rajzoljuk meg a másodperc mutatót. A Clock::_draw() metódusának szükséges módosítása: /* A másodperc mutató megrajzolása */ matrix.reset(); painter->setworldmatrix(matrix); painter->setpen(qpen(red, 1, SolidLine)); painter->drawline(0, -45, 0, 0); /* Újabb frissítés ütemezése */
22 20 A rajzolást megvalósító kód
23 8. fejezet Az aktuális id t beállító kód 1. Valósítsuk meg a nagymutató beállítását! Tippek (a) A worldmatrix forgatásával nagyon könnyen megfelel irányba lehet állítani a mutatót. (b) A QTime::currentTime() metódusával le lehet kérdezni a megfelel id t. (a) Szerkesszük be a qdatetime.h fejlécet a clock.cpp-be: #include <qdatetime.h> (b) Módosítsuk a következ két részletet a Clock::_draw() metódusban: /* Változók deklarálása */ QWMatrix matrix; QTime t = QTime::currentTime(); /* Az alap megrajzolása */ /* A nagymutató megrajzolása */ matrix.reset(); matrix.rotate(t.minute() * 6); painter->setworldmatrix(matrix); _drawarrow(painter, 45); // új sor /* A kismutató megrajzolása */ 2. Valósítsuk meg óra és a másodperc mutató beállítását! Szükséges módosítás a Clock::_draw() állományban. /* A kismutató megrajzolása */ matrix.reset(); matrix.rotate((t.hour() * 60 + t.minute()) / 2); painter->setworldmatrix(matrix); _drawarrow(painter, 30); // új sor /* A másodperc mutató megrajzolása */
24 22 Az aktuális id t beállító kód matrix.reset(); matrix.rotate(t.second() * 6); painter->setworldmatrix(matrix); painter->setpen(qpen(red, 1, SolidLine)); painter->drawline(0, -45, 0, 0); // új sor /* Újabb frissítés ütemezése */ 3. Kapcsoljuk egy id zít re az újrarajzolást! Tippek (a) Vegyünk fel egy QTimer adattagot a Clock osztályba. (b) A rajzolás végeztével egy egyszeri lefutású id zít t indítsunk 1 másodperces késleltetéssel. Hogy miért? Mert így amikor a rendszer újrarajzolja az objektumot, akkor elölr l kezd dik az egy másodperc mérése. (c) Az id zít lejártát az update() metódusra kapcsolhatjuk. (d) Amennyiben új adattagot veszünk fel az osztályba, akkor a qmake által generált Makele ezt nem tudja teljesen helyesen értékelni. # make distclean # make (a) A clock.h új tartalma: #ifndef CLOCK_H #define CLOCK_H #include <qpainter.h> #include <qtimer.h> #include <qwidget.h> class Clock : public QWidget { Q_OBJECT QTimer timer; // új sor void _draw(qpainter* painter); void _drawarrow(qpainter* painter, int length); void paintevent(qpaintevent* event); public: Clock(QWidget* parent = 0, const char* name = 0, WFlags f = 0); ; #endif /* CLOCK_H */ (b) A szükséges módosítás a Clock::_draw() metódusban: /* Újabb frissítés ütemezése */ connect(&timer, SIGNAL(timeout()), this, SLOT(update())); timer.start(1000, true); (c) Amennyiben új adattagot veszünk fel az osztályba, akkor a qmake által generált Makele ezt nem tudja teljesen helyesen értékelni. # make distclean # make 4. Indítsuk el a programot, nagyítsuk fel teljes képerny sre és gyeljük meg, ahogy villog.
25 9. fejezet A villogás kiküszöbölése kett s puerelés (double buering) segítségével Mi is az a kett s puerelés? A villogást a rajz folyamatos újrarajzolása során a számítások viszonylagos lassúsága okozza. (Ez a számítás a képerny frissítéséhez képest értend.) A kett s puerelés ezt úgy oldja meg, hogy nem közvetlenül a képerny memóriaterületére rajzolunk. Amikor elkészülünk a rajzzal, akkor egy nagyon gyors rutinnal kicseréljük a képerny n látható rajzot a háttérben elkészülttel. Az, hogy ez hogy történik a rendszer ügyességén és hardverén múlik: ˆ Ha a grakus kártya rendelkezik kell en sok memóriával, és egy egész képerny nyi képr l van szó, akkor egy egyszer memóriacím átírással meg lehet ezt oldani. ˆ A DMA segítségével a CPU-tól függetlenül lehet adatot mozgatni (közben a CPU számításokat végezhet). Megjegyzés: Ez a feladatsor csak a végén ad vizsgálható eredményt, függetlenül attól, hogy mindegyik lépés után lefordítható. 1. Emlékeztet az el z feladatsor végér l: Indítsuk el a programot, nagyítsuk fel teljes képerny sre és gyeljük meg, ahogy villog. 2. Hozzunk létre egy képet, majd méretezzük az aktuális objektumnak megfelel méret re! (Szükség lesz ehhez arra is, hogy a Clock::paintEvent() paraméterét nevesítsük, hogy elérjük.) (a) A qpixmap.h fejlécet be kell szerkeszteni a clock.cpp állományba. (b) A Clock::paintEvent() megfelel részlete: void Clock::paintEvent(QPaintEvent* event) { /* Kett s pufferelés el készítés */ static QPixmap pixmap; // módosított sor!
26 24 A villogás kiküszöbölése kett s puerelés (double buering) segítségével QRect rect = event->rect(); QSize newsize = rect.size().expandedto(pixmap.size()); pixmap.resize(newsize); pixmap.fill(this, rect.topleft()); /* A QPainter objektum létrehozása */ 3. Módosítsuk a QPainter objektum létrehozását, hogy a QPixmapre rajzoljon! A Clock::paintEvent() metódus megfelel részlete: /* A QPainter objektum létrehozása */ QPainter painter(&pixmap, this); // módosított sor! /* A rajzoló rutin meghívása */ 4. A kett s puerelés képét helyezzük ki az objektumra! A Clock::paintEvent() metódus vége: /* A kett s pufferelés ábrájának kihelyezése */ bitblt(this, event->rect().topleft(), &pixmap); 5. Vegyük át a QWidget-t l az objektum teljes rajzolását (kapcsoljuk ki az automatikus újrarajzolási eseményeket)! Megjegyzés: Erre azért van szükség, mert különben automatikusan letörli az objektumot a rendszer. Módosítsuk a Clock::Clock() konstruktorát, hogy a következ módon nézzen ki: Clock::Clock(QWidget* parent, const char* name, WFlags f) : QWidget(parent, name, f Qt::WNoAutoErase) { 6. Fordítsuk le a kódot és gyeljük meg, hogyha odébb mozgatjuk az ablakot, akkor egy másodpercig szétesik a kép! 7. Oldjuk meg, hogy ha megmozdítjuk az ablakot, akkor se essen szét a kép! Tipp A QMainWindow::moveEvent() metódusát kell felüldeniálni. (a) A mainwnd.h új verziója: #ifndef MAINWND_H #define MAINWND_H #include <qmainwindow.h> #include "clock.h" class MainWnd : public QMainWindow {
27 25 Q_OBJECT Clock* _clock; void moveevent(qmoveevent*); public: MainWnd(); ~MainWnd(); ; #endif /* MAINWND_H */ // új sor (b) És a MainWnd::moveEvent() metódus megvalósítása: void MainWnd::moveEvent(QMoveEvent*) { _clock->update();
Elemi alkalmazások fejlesztése III.
Elemi alkalmazások fejlesztése III. Grafikus felületű alkamazások készítése Bevezetés I. Készítette: Szabóné Nacsa Rozália nacsa@inf.elte.hu people.inf.elte.hu/nacsa/qt4/eaf3/ Qt 4 2009 1 www.trolltech.com
RészletesebbenElemi alkalmazások fejlesztése III.
Elemi alkalmazások fejlesztése III. Bevezetés Készítette: Szabóné Nacsa Rozália nacsa@inf.elte.hu people.inf.elte.hu/nacsa/qt4/eaf3/ Qt 4 2007 1 A Qt assistant nyitó ablaka www.trolltech.com 2 Alkalmazás
RészletesebbenElemi alkalmazások fejlesztése III.
Elemi alkalmazások fejlesztése III. Memóriajáték 1. Készítette: Szabóné Nacsa Rozália nacsa@inf.elte.hu people.inf.elte.hu/nacsa/qt4/eaf3/ Qt 4 2007 1 memorygame Játék közben 2 memorygame Kártyák kiválasztása
RészletesebbenElemi alkalmazások fejlesztése III. A Qt assistant elindítása. Ajánlott ir odalom. A Qt assistant nyitó ablaka
Elemi alkalmazások fejlesztése III Ajánlott ir odalom Egy ablakos alkalmazás készítése I. C++ / Qt felhasználásával Qt dokumentáció online: www.trolltech.com lokális változat: Kdevelop help vagy /usr/share/doc...
Részletesebbenbool _freehand = false; QPoint _lastpoint; // ebben a pontban volt az utolsó rajzolásnál az egérmutató
canvas.h #pragma once #include #include #include #include #include #include #include // terület kiválasztáshoz struct RajzParameterek
RészletesebbenElemi alkalmazások fejlesztése III
Elemi alkalmazások fejlesztése III Egy ablakos alkalmazás készítése I. C++ / Qt felhasználásával készítette: Szabóné Nacsa Rozália 1 Ajánlott irodalom Qt dokumentáció online: www.trolltech.com lokális
RészletesebbenAlkalmazások fejlesztése III. Qt 4 /C++ alapú grafikus alkalmazás Bevezetés I.
Tartalomjegyzék Alkalmazás készítés Qt osztályokkal...2 A qmake eszköz...2 Hello Qt (hello)...2 Objektumok közötti kommunikáció (quit)...3 Fordítás/futtatás...4 Grafikus felület létrehozása, vezérlők szinkronizálása
Részletesebben3. Osztályok II. Programozás II
3. Osztályok II. Programozás II Bevezető feladat Írj egy Nevsor osztályt, amely legfeljebb adott mennyiségű nevet képes eltárolni. A maximálisan tárolható nevek számát a konstruktorban adjuk meg. Az osztályt
Részletesebben3D-s számítógépes geometria és alakzatrekonstrukció
3D-s számítógépes geometria és alakzatrekonstrukció 3a. Tesztkörnyezet I http://cg.iit.bme.hu/portal/node/312 https://portal.vik.bme.hu/kepzes/targyak/viiima01 Dr. Várady Tamás, Salvi Péter BME, Villamosmérnöki
RészletesebbenGrafikus Qt programok írása segédeszközök nélkül
Grafikus Qt programok írása segédeszközök nélkül Grafikus felületű Qt programokat ahogy láttuk, készíthetünk egy egyszerű szövegszerkesztővel is, bár a Qt jó támogatást ad a grafikus felület grafikus tervezésére
Részletesebben3D-s számítógépes geometria és alakzatrekonstrukció
3D-s számítógépes geometria és alakzatrekonstrukció Tesztkörnyezet I http://cg.iit.bme.hu/portal/node/312 https://portal.vik.bme.hu/kepzes/targyak/viiima01 Dr. Várady Tamás, Dr. Salvi Péter BME, Villamosmérnöki
RészletesebbenQLabel *label = new Qlabel("Hello Qt!",0);
#include #include int main(int argc,char **argv) QApplication app(argc,argv); QLabel *label = new Qlabel("Hello Qt!",0); app.setmainwidget(label); label->show(); return app.exec();
RészletesebbenElemi grafika. Stílusok, időzítő, képek
Elemi grafika Stílusok, időzítő, képek Rajzolási felület A Qt-ban a grafikus felhasználói felület tartalmát tetszőlegesen rajzolhatjuk, ezáltal egyedi megjelenítést adhatunk neki. Mindenre rajzolhatunk,
RészletesebbenProgramozás I. 5. Előadás: Függvények
Programozás I 5. Előadás: Függvények Függvény Egy alprogram Egy C program általában több kisméretű, könnyen értelmezhető függvényből áll Egy függvény megtalálható minden C programban: ez a main függvény
RészletesebbenElemi alkalmazások fejlesztése III.
Elemi alkalmazások fejlesztése III. MDI alkalmazás II. (Számla) Készítette: Szabóné Nacsa Rozália nacsa@inf.elte.hu people.inf.elte.hu/nacsa/qt4/eaf3/ Qt 4 2007 1 Számla felépítése fejléc tábla 2 Az alkalmazás
RészletesebbenBudapest, 2007. március. ELTE Informatikai Kar
Tartalomjegyzék Alkalmazás készítés Qt osztályokkal...2 A qmake eszköz...2 Hello Qt (hello)...2 A projekt elkészítésének lépései...3 Objektumok közötti kommunikáció (quit)...3 A projekt elkészítésének
RészletesebbenObjektumok és osztályok. Az objektumorientált programozás alapjai. Rajzolás tollal, festés ecsettel. A koordinátarendszer
Objektumok és osztályok Az objektumorientált programozás alapjai Rajzolás tollal, festés ecsettel A koordinátarendszer A vektorgrafikában az egyes grafikus elemeket (pontokat, szakaszokat, köröket, stb.)
RészletesebbenEgységes és objektumközpontú adatbázis-kezelés (2. rész)
Egységes és objektumközpontú adatbázis-kezelés (2. rész) A folytatásában a bemutatjuk, hogyan kezelhetünk Qt rendszer alatt SQL sormutatót, és készíthetünk grafikus felületet programoknak a Qt Designer
RészletesebbenEseménykezelés. Aszinkron kommunikáció
Eseménykezelés Aszinkron kommunikáció Feladat Készítsünk egy stoppert, amely másodpercenként jelzi a múló időt. Ez a folyamat egy adott jelzés hatására induljon el; ugyanezen jelzés ismétléseinek hatására
RészletesebbenJava és web programozás
Budapesti M szaki Egyetem 2015. 03. 18. 6. El adás Graka Java-ban Emlékezzünk kicsit vissza a tikz-re: \begin{tikzpicture \draw (0,0) node[draw,circle] (S) {s; \draw (3,2) node[draw,circle] (A) {a; \draw
RészletesebbenEseményvezérelt alkalmazások fejlesztése I 4. előadás. Elemi grafika és egérkezelés
Eötvös Loránd Tudományegyetem Informatikai Kar Eseményvezérelt alkalmazások fejlesztése I 4. előadás Elemi grafika és egérkezelés 2016 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto
RészletesebbenRajz 01 gyakorló feladat
Rajz 01 gyakorló feladat Alkatrészrajz készítése Feladat: Készítse el az alábbi ábrán látható kézi működtetésű szelepház alkatrészrajzát! A feladat megoldásához szükséges fájlok: Rjz01k.ipt A feladat célja:
RészletesebbenStatikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék
Speciális adattagok és tagfüek Miskolci Egyetem Általános Informatikai Tanszék CPP7 / 1 Statikus adattagok Bármely adattag lehet static tárolási osztályú A statikus adattag az osztály valamennyi objektuma
RészletesebbenA jobboldalon a pnlright egy Stacked Widget Állítsuk be az első lapot és nevezzük el pnldraw-ra:
A Rajzolás lap A rajzolás lap elemi rajzolási lehetőségek bemutatására szolgál. A rajzolás a jobboldali pnlright widget egyik lapjára rakott widgetre történik. A pnlright egy több lapot tartalmazó widget
RészletesebbenProgramozás C++ -ban 2007/4
Programozás C++ -ban 2007/4 1. Az adatokhoz való hozzáférés ellenőrzése Egy C programban a struktúrák minden része mindig elérhető. Ugyanakkor ez nem a legkedvezőbb helyzet. Több szempontból is hasznos
RészletesebbenEseményvezérelt alkalmazások fejlesztése I 4. előadás. Elemi grafika és egérkezelés. Elemi grafika és egérkezelés Rajzolás grafikus felületen
Eötvös Loránd Tudományegyetem Informatikai Kar Eseményvezérelt alkalmazások fejlesztése I 4. előadás 2016 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Rajzolás grafikus felületen
RészletesebbenBME MOGI Gépészeti informatika 7.
BME MOGI Gépészeti informatika 7. 1. feladat Írjon Windows Forms alkalmazást egy kör és egy pont kölcsönös helyzetének vizsgálatára! A feladat megoldásához hozza létre a következő osztályokat! Pont osztály:
RészletesebbenMySql elindítása. Elemi alkalmazások fejlesztése IV. Feladat. Az alkalmazás adatbázisa
Elemi alkalmazások fejlesztése IV. C++/Qt adatbáziskezel ő alkalmazás készítése Kdevelop környezetben I. MySql elindítása [nacsa@localhost nacsa]$ su Password:jelszó [root@localhost nacsa]# /usr/bin/safe_mysqld
RészletesebbenElemi alkalmazások fejlesztése IV.
Elemi alkalmazások fejlesztése IV. C++/Qt adatbáziskezelő alkalmazás készítése Kdevelop környezetben I. Készítette: Szabóné Nacsa Rozália 1 MySql elindítása [nacsa@localhost nacsa]$ su Password:jelszó
RészletesebbenAlkalmazások fejlesztése III. Qt 4 /C++ alapú grafikus alkalmazás - Memóriajáték 1/2
Tartalomjegyzék Memóriajáték...2 A memóriajáték osztálydiagramja...2 A projektben használt segéd függvények (Utils)...3 utils.h...3 utils.cpp...3 CardButton osztály...4 cardbutton.h...4 cardbutton.cpp...5
RészletesebbenTervezőeszközök, fejlesztőeszközök használata Qt alapú alkalmazásoknál. Saját vezérlő használata tervezőben (worldclocks)
Tartalomjegyzék Tervezőeszközök, fejlesztőeszközök használata Qt alapú alkalmazásoknál...1 Saját vezérlő használata tervezőben (worldclocks)...1 DigitalClock osztály (módosítás)...2 MyForm osztály...3
RészletesebbenElemi alkalmazások fejlesztése III
Elemi alkalmazások fejlesztése III Qt SDI alkalmazás készítése I Kdevelop környezetben Készítette: Szabóné Nacsa Rozália Steingart Ferenc 1 Feladat Készítsünk egy számlakezel ő ablakos alkalmazást! Számlafejléc
RészletesebbenBevezetés a programozásba I.
Bevezetés a programozásba I. 6. gyakorlat C++ alapok, szövegkezelés Surányi Márton PPKE-ITK 2010.10.12. Forrásfájlok: *.cpp fájlok Fordítás: a folyamat, amikor a forrásfájlból futtatható állományt állítunk
RészletesebbenElemi alkalmazások fejlesztése III
Elemi alkalmazások fejlesztése III Egyablakos alkalmazás készítése I. Qt/X11 felhasználásával Kdevelop környezetben készítette: Steingart Ferenc Szabóné Nacsa Rozália Ajánlott irodalom Qt dokumentáció
RészletesebbenOsztály és objektum fogalma
Osztály és objektum fogalma A C++ programozási nyelv I. CPP1/ 1 Az osztály (class) class: adatok és módszerek (method) (függvények) együttese, amely absztrakt adattípusként működik. objektum: egy osztály
Részletesebbencomponents : IContainer dx : int dy : int tmidőzítő : Timer toolstripseparator1 : ToolStripSeparator tsmikilépés : ToolStripMenuItem
http:www.johanyak.hu Analóg óra Készítsünk egy analóg órát megjelenítő alkalmazást. A feladat egy lehetséges megoldása a következő: 1. Az alkalmazás vázának automatikus generálása Fájl menü, New, Project
RészletesebbenProgramozás C++ -ban
Programozás C++ -ban 4. Bevezetés az osztályokba 4.1 Az adatokhoz való hozzáférés ellenőrzése Egy C programban a struktúrák minden része mindig elérhető. Ugyanakkor ez nem a legkedvezőbb helyzet. Több
RészletesebbenOsztályok. 4. gyakorlat
Osztályok 4. gyakorlat Az osztály fogalma Az objektumok formai leírása, melyek azonos tulajdonsággal és operációkkal rendelkeznek. Osztályból objektum készítését példányosításnak nevezzük. Minden objektum
RészletesebbenElemi alkalmazások fejlesztése III.
Elemi alkalmazások fejlesztése III. Egy ablakos alkalmazás készítése II. C++ / Qt / KDevelop felhasználásával készítette: Szabóné Nacsa Rozália lektorálta: Párniczky Krisztina 1 Fájlkezelés Olvasás 2 A
RészletesebbenJava és web programozás
Budapesti M szaki Egyetem 2013. szeptember 18. 2. El adás Komplex szám public class Complex { private float repart_; private float impart_; public Complex() { repart_ = 0; impart_ = 0; public Complex(float
RészletesebbenC++ programozási nyelv Konstruktorok-destruktorok
C++ programozási nyelv Konstruktorok-destruktorok Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. szeptember A C++ programozási nyelv Soós Sándor 1/20 Tartalomjegyzék
RészletesebbenProgramozás II. 3. gyakorlat Objektum Orientáltság C++-ban
Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban Tartalom OOP ismétlés Osztályok létrehozása Adattagok láthatóságai, elnevezési ajánlások Konstruktor, destruktor this pointer Statikus és dinamikus
RészletesebbenPelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;
Java osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés. ( Előfeltétel 12. Tétel ) Az osztály egy olyan típus leíró struktúra, amely
RészletesebbenDinamikus csatolású függvénykönyvtár készítése és használata Plugin-szerű betöltés Egyszeű C++ osztályok készítése
FEJLETT PROGRAMOZÁSI NYELVEK, 2009 2. GYAKORLAT - Linux alatti C/C++ programozás Cél: Dinamikus csatolású függvénykönyvtár készítése és használata Plugin-szerű betöltés Egyszeű C++ osztályok készítése
RészletesebbenC programozási nyelv
C programozási nyelv Előfeldolgozó utasítások Dr Schuster György 2011 május 3 Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 1 / 15 A fordítás menete Dr Schuster György
RészletesebbenElemi alkalmazások fejlesztése III
Elemi alkalmazások fejlesztése III C++/ Qt alapú SDI alkalmazás készítése I. Készítette: Szabóné Nacsa Rozália Steingart Ferenc 1 Feladat Készítsünk egy számlakezel ő ablakos alkalmazást! Számlafejléc
RészletesebbenProgramozás I gyakorlat
Programozás I. - 2. gyakorlat Változók, kiiratás, bekérés Tar Péter 1 Pannon Egyetem M szaki Informatikai Kar Számítástudomány Alkalmazása Tanszék Utolsó frissítés: September 24, 2007 1 tar@dcs.vein.hu
RészletesebbenElemi alkalmazások fejlesztése IV. Adatbázis-kezelő GUI alkalmazás készítése 3. Összetett tábla karbantartása
Elemi alkalmazások fejlesztése IV. Adatbázis-kezelő GUI alkalmazás készítése 3. Összetett tábla karbantartása Készítette: Szabóné Nacsa Rozália nacsa@inf.elte.hu people.inf.elte.hu/nacsa/eaf4/ Qt 4 2007
RészletesebbenSzoftvertechnolo gia gyakorlat
Szoftvertechnolo gia gyakorlat Dr. Johanyák Zsolt Csaba http://johanyak.hu 1. Dependency Injection (függőség befecskendezés) tervezési minta A tervezési minta alapgondolata az, hogy egy konkrét feladatot
RészletesebbenBevezetés a programozásba II 1. gyakorlat. A grafikus könyvtár használata, alakzatok rajzolása
Pázmány Péter Katolikus Egyetem Információs Technológiai Kar Bevezetés a programozásba II 1. gyakorlat A grafikus könyvtár használata, alakzatok rajzolása 2014.02.10. Giachetta Roberto groberto@inf.elte.hu
RészletesebbenRajz 02 gyakorló feladat
Rajz 02 gyakorló feladat Alkatrészrajz készítése A feladat megoldásához szükséges fájlok: Rjz02k.ipt Feladat: Készítse el az alábbi ábrán látható tengely alkatrészrajzát! A feladat célja: Az alkatrész
RészletesebbenProgramozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós április 4. Széchenyi István Egyetem, Gy r
Programozás (GKxB_INTM021) Széchenyi István Egyetem, Gy r 2018. április 4. Számok rendezése Feladat: Fejlesszük tovább úgy a buborék rendez algoritmust bemutató példát, hogy a felhasználó adhassa meg a
RészletesebbenDr. Schuster György október 14.
Real-time operációs rendszerek RTOS 2011. október 14. A fordítás vázlata prog.c Előfeldolgozó Átmenti állomány Fordító prog.obj más.obj-tek könyvtárak indító kód Linker futtatható kód Ismétlés Előfeldolgozó
RészletesebbenBevezetés a programozásba Előadás: Fordítási egység
Bevezetés a programozásba 2 5. Előadás: Fordítási egység ISMÉTLÉS Tagfüggvény kiemelése struct Particle { int x,y; unsigned char r,g,b; void rajzol(); }; void Particle::rajzol() { gout
RészletesebbenA Paint program használata
A Paint program használata A Windows rendszerbe épített Paint program segítségével képeket rajzolhat, színezhet és szerkeszthet. A Paint használható digitális rajztáblaként. Egyszerű képek és kreatív projektek
RészletesebbenBevezetés a programozásba II. 8. Előadás: Osztályok, objektumok, osztályszintű metódusok
Bevezetés a programozásba II 8. Előadás: Osztályok, objektumok, osztályszintű metódusok vektor.h #ifndef VEKTOR_H #define VEKTOR_H class Vektor { int meret, *mut; public: Vektor(int meret); int szamlal(int
RészletesebbenA Vonallánc készlet parancsai lehetővé teszik vonalláncok és sokszögek rajzolását.
11. Geometriai elemek 883 11.3. Vonallánc A Vonallánc készlet parancsai lehetővé teszik vonalláncok és sokszögek rajzolását. A vonallánc egy olyan alapelem, amely szakaszok láncolatából áll. A sokszög
RészletesebbenDiagram formázása. A diagram címének, a tengelyek feliratainak, jelmagyarázatának, adatfeliratainak formázása
A diagram címének, a tengelyek feliratainak, jelmagyarázatának, adatfeliratainak formázása Ha ezen elemeknek a betűtípusát, betűstílusát, betűméretét, betűszínét és az elem hátterét akarjuk formázni, akkor
RészletesebbenProgramozás 6. Dr. Iványi Péter
Programozás 6. Dr. Iványi Péter 1 Előfeldolgozás része Makrók A forrás kódban elvégzi a helyettesítéseket a fordító Csak egyszer végez helyettesítést Nem olyan makrók, mint a LISP vagy Scheme esetén Csak
RészletesebbenAbstract osztályok és interface-ek. 7-dik gyakorlat
Abstract osztályok és interface-ek 7-dik gyakorlat Abstract metódusok és osztályok Az OO fejlesztés során olyan osztályokat is kialakíthatunk, melyeket csak továbbfejlesztésre, származtatásra lehet használni,
Részletesebben7. fejezet: Mutatók és tömbök
7. fejezet: Mutatók és tömbök Minden komolyabb programozási nyelvben vannak tömbök, amelyek gondos kezekben komoly fegyvert jelenthetnek. Először is tanuljunk meg tömböt deklarálni! //Tömbök használata
Részletesebbenosztályok kapcsolata Származtatatás C++ Izsó Tamás 2014. március 19. Izsó Tamás Származtatatás/ 1
Származtatatás C++ Izsó Tamás 2014. március 19. Izsó Tamás Származtatatás/ 1 Dinamikus tagváltozó az osztályban class RVektor { i n t n ; R a c i o n a l i s p ; p u b l i c : RVektor ( i n t n=10 ) :
Részletesebbenés az instanceof operátor
Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában
RészletesebbenElemi alkalmazások fejlesztése III.
Elemi alkalmazások fejlesztése III. Bevezetés Készítette: Szabóné Nacsa Rozália nacsa@inf.elte.hu people.inf.elte.hu/nacsa/qt4/eaf3/ Qt 4 2007 EAF3 Qt4 Bevezetés (mod01) 1 A Qt assistant nyitó ablaka www.trolltech.com
RészletesebbenKépfájlok beolvasása és megjelenítése
Programozás 3 1 2016 Képfájlok beolvasása és megjelenítése Előzmények Eddig a Rajzolás, Grafika és az Interaktivitás lap programját készítettük el. Ennek a programnak néhány új funkcionalítással ellátott
RészletesebbenJava VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán
Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában
RészletesebbenVisual C++ osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés.
Visual C++ osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés. Az osztály egy olyan típus leíró struktúra, amely tartalmaz adattagokat
Részletesebben1. Alapok. Programozás II
1. Alapok Programozás II Elérhetőség Név: Smidla József Elérhetőség: smidla dcs.uni-pannon.hu Szoba: I916 2 Irodalom Bjarne Stroustrup: A C++ programozási nyelv 3 Irodalom Erich Gamma, Richard Helm, Ralph
RészletesebbenA lista eleme. mutató rész. adat rész. Listaelem létrehozása. Node Deklarálás. Létrehozás. Az elemet nekünk kell bef zni a listába
A lista eleme 0 adat rész mutató rész Listaelem létrehozása p: Node 0 0 3 0 Az elemet nekünk kell bef zni a listába Deklarálás struct Node { int int value; Node* next; next; adattagok Létrehozás Node*
RészletesebbenProgramozás C++ -ban
8. Dinamikus objektumok Programozás C++ -ban Ahhoz hogy általános prolémákat is meg tudjunk oldani, szükség van arra, hogy dinamikusan hozhassunk létre vagy szüntethessünk meg objektumokat. A C programozási
RészletesebbenVirtuális függvények (late binding)
Virtuális függvények (late binding) Miskolci Egyetem Általános Informatikai Tanszék Virtuális függvények CPP5 / 1 Azonos nevű függvények megkülönböztetése paraméterszignatúra (függvény overloading) - egy
RészletesebbenProgramozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK. Sapientia EMTE
Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK Sapientia EMTE 2015-16 1 Felülnézet 1 Feltételes fordítás #if, #else, #elif, #endif, #ifdef, #ifndef stb. Felülnézet 2 #include: hatására a preprocesszor
Részletesebben1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon
1. Template (sablon) 1.1. Függvénysablon Maximum függvény megvalósítása függvénynév túlterheléssel. i n l i n e f l o a t Max ( f l o a t a, f l o a t b ) { return a>b? a : b ; i n l i n e double Max (
RészletesebbenBevezetés a programozásba Előadás: A const
Bevezetés a programozásba 2 6. Előadás: A const ISMÉTLÉS Interface - Implementation struct Particle { int x,y; unsigned char r,g,b; void rajzol(); }; }; void Particle::rajzol() { gout
RészletesebbenJava V. Osztályszint. lyszintű ű tagok. Példányváltozó. Osztályváltozó. Általános Informatikai Tanszék Utolsó módosítás:
Java V. szint lyszintű ű tagok A final minősítő Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 05. Java V.: szintű tagok JAVA5 / 1 Példányváltozó Az eddig megismert adattagokból
RészletesebbenVégeselem módszer 7. gyakorlat
SZÉCHENYI ISTVÁN EGYETEM ALKALMAZOTT MECHANIKA TANSZÉK Végeselem módszer 7. gyakorlat (kidolgozta: Szüle Veronika egyetemi ts.) Feladat: harang sajátrezgéseinek meghatározása 500 100 500 1000 250 250 1.
RészletesebbenMiután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:
Excel objektumok Az excelben az osztályokat úgynevezett class modulokként hozzuk létre. Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni: View-ba
RészletesebbenFüggvény pointer. Feladat: Egy tömbben soroljunk fel függvényeket, és hívjuk meg valahányszor.
Függvény pointer Több feladat közül futási időben döntöm el, hogy melyiket hajtom végre. A függvényre mutató pointer a függvény kódjának a címére mutat, azon keresztül meghívhatom a függvényt. A pointernek
RészletesebbenObjektumok inicializálása
Objektumok inicializálása Miskolci Egyetem Általános Informatikai Tanszék Objektumok inicializálása CPP4 / 1 Tartalom public adattagok inicializálása felsorolással konstruktor objektum tömbök osztály típusú
RészletesebbenBisonc++ tutorial. Dévai Gergely. A szabály bal- és jobboldalát : választja el egymástól. A szabályalternatívák sorozatát ; zárja le.
Bisonc++ tutorial Dévai Gergely A Bisonc++ egy szintaktikuselemz -generátor: egy környezetfüggetlen nyelvtanból egy C++ programot generál, ami egy tokensorozat szintaktikai helyességét képes ellen rizni.
RészletesebbenTájékoztató. Használható segédeszköz: -
A 35/2016. (VIII. 31.) NFM rendelet szakmai és vizsgakövetelménye alapján. Szakképesítés, azonosító száma és megnevezése 54 481 06 Informatikai rendszerüzemeltető Tájékoztató A vizsgázó az első lapra írja
RészletesebbenC# osztálydeníció. Krizsán Zoltán 1. .net C# technológiák tananyag objektum orientált programozás tananyag
C# osztálydeníció Krizsán Zoltán 1 Általános Informatikai Tanszék Miskolci Egyetem.net C# technológiák tananyag objektum orientált programozás tananyag Tartalom 1 Bevezetés 2 Osztály létrehozása, deníció
RészletesebbenBánsághi Anna 2014 Bánsághi Anna 1 of 33
IMPERATÍV PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 7. ELŐADÁS - ABSZTRAKT ADATTÍPUS 2014 Bánsághi Anna 1 of 33 TEMATIKA I. ALAPFOGALMAK, TUDOMÁNYTÖRTÉNET II. IMPERATÍV PROGRAMOZÁS Imperatív
RészletesebbenJava és web programozás
Budapesti M szaki Egyetem 2013. szeptember 25. 3. El adás User public class User { private String realname_; private String nickname_; private String password_; public User(String realname, String nickname)
RészletesebbenJava II. I A Java programozási nyelv alapelemei
Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2008. 02. 19. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve az annak
RészletesebbenSzoftvertechnolo gia 7. gyakorlat
Szoftvertechnolo gia 7. gyakorlat Román Gábor 1. Feladat Készítsen az alábbi leírás alapján egy Egyed kapcsolat (EK) diagramot, majd annak alapján Visual Studio 2013-ban Entity Framework entitás diagramot!
RészletesebbenSzámítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás
Számítástechnika II. BMEKOKAA153 2. Előadás Dr. Bécsi Tamás Tömbök (Arrays) Definíció: típus[] név; (pld. int[] szamok; ) Inicializálás: int[] szamok = new int[4]; int[] szamok = 1,2,4,3,5}; int[] szamok
Részletesebben12. gyakorlat Enum; Tárolási osztályok Preprocesszor utasítások; Moduláris programozás
12. gyakorlat Enum; Tárolási osztályok Preprocesszor utasítások; Moduláris programozás Házi (f0174) Egy sor kiíratási formátuma: "nev: %s; pont: %d;". Olvasd be a kiírt számot úgy, ha tudod, hogy a kiírt
RészletesebbenC++ referencia. Izsó Tamás február 17. A C++ nyelvben nagyon sok félreértés van a referenciával kapcsolatban. A Legyakoribb hibák:
C++ referencia Izsó Tamás 2017. február 17. 1. Bevezetés A C++ nyelvben nagyon sok félreértés van a referenciával kapcsolatban. A Legyakoribb hibák: Sokan összetévesztik a pointerrel. Keveset alkalmazzák
RészletesebbenLakóház tervezés ADT 3.3-al. Segédlet
Lakóház tervezés ADT 3.3-al Segédlet A lakóház tervezési gyakorlathoz főleg a Tervezés és a Dokumentáció menüket fogjuk használni az AutoDesk Architectural Desktop programból. A program centiméterben dolgozik!!!
RészletesebbenObjektumorientált programozás C# nyelven
Objektumorientált programozás C# nyelven 1. rész Osztályok és objektumok Mezık és metódusok Konstruktor és destruktor Névterek és hatókörök Láthatósági szintek Osztály szintő tagok Beágyazott osztályok
RészletesebbenJohanyák Zsolt Csaba: Ugráló gomb oktatási segédlet Copyright 2008 Johanyák Zsolt Csaba
Ugráló gomb Készítsünk egy egyszerű játékprogramot, ami egy mozgó nyomógombot tartalmaz. A nyomógomb beállított ideig marad egy helyben, majd az ablakon számára elhatárolt terület (panel) egy véletlenszerűen
RészletesebbenWidget-ünket a festők vásznáról Canvas-nak nevezzük el. Mit kell a widgetnek tudnia?
A Canvas widget Widget-ünket a festők vásznáról Canvas-nak nevezzük el. Mit kell a widgetnek tudnia? 1. Más widgetekre rárakható legyen, 2. Ha a befoglaló (szülő) widget mérete változik az ő mérete is
RészletesebbenAutodesk Inventor Professional New Default Standard.ipt
Adaptív modellezési technika használata Feladat: Készítse el az alábbi ábrán látható munkahenger összeállítási modelljét adaptív technikával! 1. Indítson egy új feladatot! New Default Standard.ipt 2. A
RészletesebbenVII. Appletek, grafika
VII. Appletek, grafika 1. Bevezetés A tantárgy elején említettük, hogy a Java alkalmazásokat két nagy csoportba sorolhatjuk. Ezek: alkalmazások (applications) alkalmazáskák (applets) Az eddig megírt programjaink
RészletesebbenLineáris egyenletrendszerek
Lineáris egyenletrendszerek 1 Alapfogalmak 1 Deníció Egy m egyenletb l álló, n-ismeretlenes lineáris egyenletrendszer általános alakja: a 11 x 1 + a 12 x 2 + + a 1n x n = b 1 a 21 x 1 + a 22 x 2 + + a
RészletesebbenEseménykezelés. Aszinkron kommunikáció
Eseménykezelés Aszinkron kommunikáció Feladat Készítsünk egy stoppert, amely másodpercenként jelzi a múló időt. Ez a folyamat egy adott jelzés hatására induljon el; ugyanezen jelzés ismétléseinek hatására
RészletesebbenRAJZ1. vezetett gyakorlat
Inventor R4 1 Rajz1. vezetett gyakorlat RAJZ1. vezetett gyakorlat Műhelyrajz készítés A feladat megoldásához szükséges fájlok: Tutorial Files\body1 Feladat: Készítse el a szelepház műhelyrajzát! 1) Indítson
RészletesebbenSDI ALKALMAZÁS I. Workspace / ResourceView / Toolbar / IDR_MAINFRAME. Workspace / ResourceView / Menu / IDR_MAINFRAME
SDI ALKALMAZÁS I. Feladat: Készítsünk egy olyan alkalmazást, amely az év végi adózás céljából rögzíti egyetlen évközi bevételnek az adatait: bruttó jövedelem adóel ı leg nettó bevétel jövedelem forrása
Részletesebben