Elemi alkalmazások fejlesztése III. SDI alkalmazás készítése Qt-ben I.

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "Elemi alkalmazások fejlesztése III. SDI alkalmazás készítése Qt-ben I."

Átírás

1 SDI alkalmazás készítése Qt-ben I...3 Feladat...3 A projekt osztálydiagramja...3 A projekt modulszekezete...4 Új projekt létrehozása...5 A számla megtervezése...5 Vezérlőelemek és paraméterezésük...6 Az InvoicerDoc osztály...7 Az InvoicerDoc osztály definíciója...7 Az InvoicerDoc osztály implementációja...7 Eseménykezelés QAction osztállyal...8 Az InvoicerView osztály...9 Az InvoicerView osztály definíciója...9 Az InvoicerView osztály implementációja...9 Főablak: QMainWindow osztály...10 Az eseménykezelés lépései...10 Egy QAction részletesen - File/New...11 A filenew tevékenység (QAction) deklarációja...11 A filenew tevékenység (QAction) objektum létrehozása és inicializálása (initaction())...11 A filenew tevékenység (QAction) elhelyezése a menüsorban (initmenubar())...12 A filenew tevékenység (QAction) beillesztése az eszköztárba (inittoolbar())...12 A filenew slot definíciója ( slotfilenew() )...12 Az Invoicer osztály...13 Inicializáló műveletek...13 Slotok...13 Adattagok...13 Az Invoicer osztály definíciója...14 Az Invoicer osztály implementációja...15 Tevékenység létrehozása/inicializálása...16 Menüpontok létrehozása és inicializálása...17 Invoicer::initMenuBar()...17 Eszköztár létrehozása és inicializálása...17 Invoicer::initToolBar()...17 Státuszsor inicializálása...18 Invoicer::initStatusBar()...18 Az alkalmazás dokumentum létrehozása és inicializálása...18 Invoicer::initDoc()...18 Az alkalmazás nézet (central widget) létrehozása és inicializálása...18 Invoicer::initView()...18 Kilépés kérdezéssel...18 Invoicer::queryExit()...18 Az Invoicer osztály slotjainak implementációja (vázlat)...19 Invoicer::slotFileNew()...19 Invoicer::slotFileOpen()...19 Invoicer::slotFileSave()...19 Invoicer::slotFileSaveAs()...19 Invoicer::slotFileQuit() oldal

2 Invoicer::slotViewToolBar(bool toggle)...20 Invoicer::slotViewStatusBar(bool toggle)...20 Invoicer::slotHelpAbout()...20 Az alkalmazás főprogramja...21 main.cpp...21 Fordítás/Futtatás...21 Projekt összeállítása Qt parancsokkal...22 A projektet alkotó összetevők forrása letölthető a people.inf.elte.hu/nacsa honlapról. 2. oldal

3 ! #" $ #" %& (')+*,$ -#*.'0/213-+* ;:(4=<>@? Az SDI alkalmazások készítése Qt-ben I, II, III-ban arra mutatunk példát, hogyan készíthetünk a Qt osztályait felhasználva korszerű, menüvezérelt, ablakos alkalmazást. A projektet alkotó összetevők forrása letölthető a people.inf.elte.hu/nacsa címről. ACBEDFGHFJI Készítsünk egy olyan alkalmazást, amely alkalmas számlák (invoice) rögzítésére, karbantartására. Egy számla fejlécből (header) és számlatételek (items) sorozatából áll. A számla fejléce a következő adatokat tartalmazza: várárló neve (customer), vásárló címe: irányítószám (zip), helység (city), utca (street), számla sorszáma (invno), kiállítás dátuma (released), teljesítés dátuma (fulfilled), fizetési határidő (dueto). Egy számlatétel az alábbi összetevőkből áll: megnevezés (name), mennyiségi egység (unit), egységár (unitprice), mennyiség (quantity), nettó ár (netprice=unitprice*quantity), áfakulcs (vatpercent), áfa összege (vat=netprice*vat/1), bruttó ár (grossprice=netprice+vat) A program tegye lehetővé a fenti adatok felvitelét, módosítását, a számlák fájlba történő mentését és azok visszaolvasását. Ebben a munkafüzetben az ismeretek alapos elsajátítása érdekében - a projektet alkotó elemeket kézzel illesztjük be a projektbe, és kézi programozással adjuk meg a forrásprogramok kódját is. KMLON PRQSBUTHIHPWVYXYI[Z\D^]HGH_`FEaON2Fb!QF Projektünket az ún, dokument/view architektúra szerint készítjük el, melyben külön osztály felel az adatokért (doc), és külön osztály az adatok megjelenítéséért (view). A QObject osztályból származtatott InvoicerDoc osztály feladata a számla adatok kezelése. A megjelenítéséért a Qt Designerrel megtervezett InvoicerViewBase osztályból származtatott InvoicerView osztály felel. Az alkalmazás főablakát a QMainWindow osztályból származtatjuk. A QMainWindow osztály az ablakos alkalmazásoknál megszokott, menüvel, státuszsorral, stb. ellátott keretablakot valósítja meg. 3. oldal

4 cmdoe frgshuihjlkmfjnpowq`rysuhuithesuhtjuh main.cpp invoicer.h invoicerdoc.h invoicerdoc.cpp invoicerview.h invoicerview.cpp A főprogram Az alkalmazás főablakát megvalósító Invoicer osztály Az alkalmazás dokumentumtípusát (számla) megvalósító InvoicerDoc osztály Az alkalmazás főablakának belsejét (a számla megjelenítését) megvalósító InvoicerView osztály. Az InvoicerView osztályt az InvoicerViewBase osztályból fogjuk előállítani származtatással. Az InvoicerViewBase osztályt a Qt Designerrel tervezzük meg, majd a segítségével elkészített invoicerviewbase.ui fájlt beillesztjük a projektünkbe. 4. oldal

5 vxw!yoz w~ W ƒ uz pt ˆ \ \Š Hozzunk létre egy üres KDevelop/Qt/C++ projektet 1. Ha az Ön által használt fejlesztőeszközben nincs ilyen lehetőség, akkor készítsen el egy tetszőleges, Qt alapú projektet, és törölje a projekt.h és.cpp fájljait. Ezzel elkészül egy olyan projekt környezet, amelybe már beilleszthetjük a saját forrásainkat. (A munkafüzet végén talál egy másik technikát az alkalmazás projekt összeállítására.) Y ˆ Œ ŠŽŒ ; u\z E UƒU t A főablak tartalmát elkészítése. Qt Designer segítségével készítjük el. A cél az alábbi formanyomtatvány (widget) Készítse el a fenti formanyomtatványt, majd mentse el invoicerviewbase.ui néven a projekt könyvtárába. Az alábbi táblázatban felsoroltuk a formanyomtatványon szereplő vezérlőelemeket és azok beállításait. (properities) 1 KDevelop2: Project/New/Qt/Qt SDI/(Project name: Invoicer) /Create KDevelop3: Project/New/C++/Qt Application/Create 5. oldal

6 Vezérlőelemek és paraméterezésük Customer blokk Vezérlő azonosító Class Properties Megjegyzés TextLabel* QLabel Text: Name:, Buddy: customer Buddy: A Name cimke és a customer szerkesztőmező összerendelése. TextLabel* QLabel Text: Zip:, Buddy: zip TextLabel* QLabel Text: Locality:, Buddy: city TextLabel* QLabel Text: Street:, Buddy: street customer zip city street Invoice blokk QLineEdit QLineEdit QLineEdit QLineEdit Vezérlő azonosító Class Properties Megjegyzés TextLabel* QLabel Text: No:, Buddy: invno TextLabel* QLabel Text: Released:, Buddy: released TextLabel* QLabel Text: Fulfilled:, Buddy: fulfilled TextLabel* QLabel Text: Due to:, Buddy: dueto invno released fulfilled dueto Items blokk QLineEdit QLineEdit QLineEdit QLineEdit items QListView Column:Name/Unit/Qty/Unit Price/Net Price/VAT%/VAT/Price Grandtotal blokk TextLabel* QLabel Text: Grandtotal:, Buddy: sum sum QLineEdit A vezérlőelemre duplát kattintva szerkesztheti a listát. * : A *-gal megjelölt feliratoknál nem kötelező egyedi azonosítót megadni. A Qt Designerrel létrehozott.ui fájlt mentse el a projekt könyvtárába invoicerviewbase.ui néven, majd adja hozzá a fájlt a projekthez: Add Existing File.../invoicer/invoicerviewbase.ui 6. oldal

7 A projekt összeállításakor az invoicerviewbase.ui fájlból az uic (user interface compiler) elkészíti az InvoicerViewBase osztály forráskódját, melyet az invoicerviewbase.h és az invoicerviewbase.cpp fájlokban helyez el. Nekünk csak az invoicerviewbase.ui fájlt kell beilleszteni a projektbe, a forráskódot tartalmazó fájlokat nem. + # [ šh œ\žyÿ š œ šw Y Y [ Y A Document/View architectura szerint az InvoicerDoc osztály felelősége az alkalmazás adatainak kezelése. Az InvoicerDoc osztály definíciója class InvoicerDoc : public QObject Q_OBJECT public: InvoicerDoc(); ~InvoicerDoc(); void newdoc(); bool save(); bool saveas(const QString &filename); bool load(const QString &filename); bool ismodified() const; signals: void documentchanged(); protected: bool modified; ; invoicerdoc.h A függvények pontos (részletes) működését a III. munkafüzet tartalmazza. Ha megváltozott a dokumentum, jelezzük. Ebben az adattagban tároljuk, hogy változtak-e az adatok. A dokumentum osztályban a modified flag tárolja, megváltozott-e a dokumentum. Adataink megváltozásáról a documentchanged() signál tájékoztatja a külvilágot, lehetővé téve, hogy az abban érdekelt objektumok rákapcsolódhassanak erre a signálra. Így az alkalmazás bezárásakor a nézet osztály figyelmeztetheti a felhasználót, ha megváltoztak az adatok, és azokat még nem mentette el. Az InvoicerDoc osztály implementációja #include "invoicerdoc.h" InvoicerDoc::InvoicerDoc() modified = false; InvoicerDoc::~InvoicerDoc() invoicerdoc.cpp A függvényeket részletesen később adjuk meg. A destruktor üres, hiszen a dokumentum osztály az Invoicer osztály gyereke, így az azzal együtt megszűnik. 7. oldal

8 void InvoicerDoc::newDoc() //TODO Új dokumentum létrehozása ك.ك ل مكى ى A függvényeket részletesen később adjuk meg. bool InvoicerDoc::save() //TODO Dokumentum elmentése return true; bool InvoicerDoc::saveAs(const QString & /*filename*/) //TODO Dokumentum elmentése más néven return true; bool InvoicerDoc::load(const QString & /*filename*/) //TODO Új dokumentum betöltése emit documentchanged(); return true; bool InvoicerDoc::isModified() const return modified; A load() a fájl betöltésekor szignált küld a dokumentum megváltozásáról. A modified adattagban tároljuk, változtak-e az adataink. 0ªW«W W t«e±u«e² Uª ³ µt [ ¹H m¹wªy±y º\²`²»\² A grafikus alkalmazások általában lehetővé teszik a felhasználó számára, hogy több helyről is kezdeményezhessen egy-egy tevékenységet. Például a fájl mentése tevékenység kezdeményezhető menüből, eszköztárról (toolbar), vagy gyorsbillentyű (accelerator) alkalmazásával is. A QAction osztály a felhasználói felületről kezdeményezhető tevékenységek kezelésére szolgáló osztály. A QAction osztályt alkalmazva a kívánt tevékenységet (action) egyetlen egyszer kell létrehozni, melyet azután az alkalmazásunk különböző helyéről aktivizálhatunk. Aktivizálhatjuk menüből, eszköztárból ill. rendelhetünk hozzá gyorsmenüt. A QAction osztály alkalmazásával a különböző helyről aktivizálható események öszzhangban lesznek egymással. Egy QAction objektumban elhelyezhetünk ikont, menü szöveget, státusz szöveget, what is this szöveget és súgó szöveget (tooltip). Ezeket az adatokat megadhatjuk az esemény létrehozásakor a konstruktorban, vagy futás közben is. Egy QAction lehet állapotváltó esemény (toggle action) pl. Bold toolbar eszközgomb-, vagy parancs (command action) típusú esemény pl. File open menüpont -. A QAction típusú objektum az esemény végrehajtásakor activated() szignált küld. A toggle action típusú QAction objektumok állapotváltáskor egy toggled() szignált is küldenek. 8. oldal

9 ¼+½#¾[ À ÁH Ã\ÄYÅ3ÆtÂ Ä ÇÈÁHÉ ½YÊ[Ë\Ì^Í Az osztály felelősége az alkalmazás felhasználói felületének (nézet) kezelése. Az InvoicerViewBase osztályból származtatással hozzunk létre egy új osztályt InvoicerView néven. Az InvoicerView osztály definíciója #include "invoicerviewbase.h" #include "invoicerdoc.h" invoicerview.h class InvoicerView : public InvoicerViewBase Q_OBJECT public: InvoicerView(QWidget *parent=0, InvoicerDoc* doc=0); ~InvoicerView(); protected slots: void slotdocumentchanged(); ; Az InvoicerView osztály az InvoicerViewBase osztály leszármazottja. A konstruktoron és a destruktoron kívül egyetlen publikus slotot tartalmaz (slotdocumentchanged()), amelyet majd akkor hajtunk végre, ha valamilyen változás történt az adatainkban. Az InvoicerView osztály implementációja #include "invoicerview.h" InvoicerView::InvoicerView(QWidget *parent, InvoicerDoc *doc) : InvoicerViewBase(parent) connect(doc, SIGNAL(documentChanged()), this, SLOT(slotDocumentChanged())); invoicerview.cpp Összekötjük a dokumentum osztály adatainak megváltozását jelző signált a megjelenítésért felelős nézetosztály slotjával. InvoicerView::~InvoicerView() void InvoicerView::slotDocumentChanged() //TODO update the view A slot feladata a nézet megjelenítése/frissítése. A konstruktor implementációjában összekapcsoljuk a dokumentum documentchanged() signálját az InvoicerView osztály aktuális példányának slotdocumentchanged() slotjával. A destruktorban nincs tennivalónk, hiszen terveink szerint ezen osztály egyetlen példánya lesz az alkalmazásunk főablaka, amely az alkalmazás bezárásakor automatikusan megszűnik. 9. oldal

10 ÎCÏWÐÑJÒ`ÐÓtÔpÕ Ö Ð\ØÙ ÚlØÙpÛCÜ ÝÈÜHÞ ßYà[á\Ò^â A QMainWindow osztály az alkalmazás felhasználói felületéül szolgáló keret ( főablak ), melynek felépítése a következő: Az ábrán megadott függvények segítségével megkapjuk a QMainWindow egyes részeire mutató pointert. E pointerek segítségével helyezhetjük el az ablak alkalmazásspecifikus elemeit. Például a menüsor File menüpontját az alábbi függvénnyel tehetjük rá az ablakra: menubar()->insertitem(tr("&file"), filemenu); ã+ä åuæwåuçmè éwêwëåeäuåuì èuæ ì è;íoèuætåuî Megjegyzés Létrehozunk egy tevékenység objektumot (QAction). Beállítjuk a tevékenység alkalmazásspecifikus adatait (menü szövege, státusz sor szövege, stb.) Létrehozzuk a menüpontot, és elhelyezzük azt az alkalmazás főablakában. Tevékenységet rendelünk a menüponthoz. Összekötjük a tevékenységet az őt kezelő slottal. Megadjuk a slot implementációját. A QAction osztállyal a felhasználó által kezdeményezhető eseményeket kezelhetjük (menüből, eszközgombbal, gyorsbillentyűvel aktivizálható események). Ezeket az eseményeket nevezzük a továbbiakban tevékenységeknek, megkülönböztetve a QEvent osztállyal megadott eseményektől, illetve a felhasználói eseményektől (custom event). 10. oldal

11 ï ðòñôóõ ötø[ù úhûmü ýeþyÿ tø Uþ û Ẅù Ahhoz, hogy jobban megértsük a QAction működését, nézzük meg közelebbről a File/New menüponthoz rendelt filenew eseményt. A filenew tevékenység (QAction) deklarációja class Invoicer : public QMainWindow Q_OBJECT public: invoicer.h void initactions(); void initmenubar(); void inittoolbar(); public slots: void slotfilenew(); A File/New parancsot kezelő slot. private: InvoicerView *view; InvoicerDoc *doc; QPopupMenu *filemenu; QAction *filenew; A File menüpont deklarációja. A filenew tevékenység deklarációja ; A filenew tevékenység (QAction) objektum létrehozása és inicializálása (initaction()) void Invoicer::initActions() filenew = new QAction(tr("&New"), tr("ctrl+n"), this); filenew->seticonset(qpixmap::frommimesource("new.png")); filenew->setstatustip(tr("creates a new document")); filenew->setwhatsthis(tr("new File\n\nCreates a new document")); connect(filenew, SIGNAL(activated()), this, SLOT(slotFileNew()));... A QAction első paramétere a menü szövege, a második paramétere a gyorsbillentyű. A harmadik paraméter this értéke azt jelzi, hogy a tevékenység objektum az őt létrehozó objektum gyereke. Qt-ben a képek kezelése többféleképpen történhet. Betölthetjük a képet futási időben, beilleszthetjük a forráskódba XPM fájlként, vagy használhatjuk a Qt image collection mechanizmusát. Mi a harmadik lehetőséget választjuk, ezért a projektbe be kell illesztenünk a projektben használt kép fájlokat. A seticonset() függvénnyel állítjuk be a tevékenységhez tartozó ikont. A setstatustip() függvénnyel megadjuk a státusz sorban megjelenítendő szöveget, a setwhatsthis() függvénnyel a What is this eszközgombhoz rendelt rövid ismertető szövegét. A connect metanyelvi paranccsal öszekötjük az esemény aktivizálását jelző signált és az őt kezelő slotot. 11. oldal

12 A filenew tevékenység (QAction) elhelyezése a menüsorban (initmenubar()) void Invoicer::initMenuBar() // menubar entry filemenu filemenu=new QPopupMenu(); filenew->addto(filemenu); fileopen->addto(filemenu); filemenu->insertseparator(); filesave->addto(filemenu); filesaveas->addto(filemenu); filemenu->insertseparator(); filequit->addto(filemenu); // menubar entry viewmenu viewmenu=new QPopupMenu(); viewmenu->setcheckable(true); viewtoolbar->addto(viewmenu); viewstatusbar->addto(viewmenu); // menubar entry helpmenu helpmenu=new QPopupMenu(); helpaboutapp->addto(helpmenu); // MENUBAR CONFIGURATION menubar()->insertitem(tr("&file"), filemenu); menubar()->insertitem(tr("&view"), viewmenu); menubar()->insertseparator(); menubar()->insertitem(tr("&help"), helpmenu); A filenew tevékenység (QAction) beillesztése az eszköztárba (inittoolbar()) void Invoicer::initToolBar() // TOOLBAR filetoolbar = new QToolBar(this, "File operations"); filenew->addto(filetoolbar); fileopen->addto(filetoolbar); filesave->addto(filetoolbar); filetoolbar->addseparator(); QWhatsThis::whatsThisButton(fileToolbar); A filenew slot definíciója ( slotfilenew() ) void Invoicer::slotFileNew() statusbar()->message(tr("creating new file...")); doc->newdoc(); statusbar()->message(tr("ready.")); 12. oldal

13 "!$#%'&$$()"*,+ Alkalmazásunk menüpontjai: File: New, Open, Save, SaveAs, Quit View: ToolBar, StatusBar Help: About A menüpontoknak megfelelően az alkalmazásunk főablakául szolgáló Invoicer osztályban az alábbi függvényeket és adatokat definiáljuk. Inicializáló műveletek initaction() initmenubar() inittoolbar() initstatusbar() initdoc() initview() Az alkalmazásban elérhető tevékenységeket reprezentáló QAction objektumok létrehozása Menürendszer felépítése Az eszköztár felépítése A sátuszsor inicializálása Kezdeti dokumentum (InvoicerDoc) létrehozása és inicializálása A nézet (InvoicerView) objektum létrehozása és inicializálása Slotok slotfilenew() slotfileopen() slotfilesave() slotfilesaveas() slotfilequit() slotviewtoolbar() slotviewstatusbar() slothelpabout() Új dokumentum létrehozása Dokumentum olvasása fájlból Dokumentum mentése fájlba Dokumentum mentése fájlba más néven Kilépés Az eszköztár megjelenítése/elrejtése A státuszsor megjelenítése/elrejtése Az About ablak megjelenítése Adattagok doc view menü objektumok tevékenységek Az aktuális dokumentum (InvoicerDoc) objektumra mutató pointer Az aktuális (és egyetlen) nézet (InvoicerView) objektumra mutató pointer QPopupMenu, QToolBar QAction 13. oldal

14 Az Invoicer osztály definíciója #include <qmainwindow.h> #include "invoicerview.h" class QAction; class Invoicer : public QMainWindow Q_OBJECT public: Invoicer(QWidget *parent = 0, const char *name = 0); private: /** initializes all QActions of the application */ void initactions(); void initmenubar(); void inittoolbar(); void initstatusbar(); void initdoc(); void initview(); bool queryexit(); private slots: void slotfilenew(); void slotfileopen(); void slotfilesave(); void slotfilesaveas(); void slotfilequit(); void slotviewtoolbar(bool toggle); void slotviewstatusbar(bool toggle); void slothelpabout(); private: InvoicerView *view; InvoicerDoc *doc; QPopupMenu *filemenu; QPopupMenu *viewmenu; QPopupMenu *helpmenu; QToolBar *filetoolbar; QAction *filenew; QAction *fileopen; QAction *filesave; QAction *filesaveas; QAction *filequit; QAction *viewtoolbar; QAction *viewstatusbar; QAction *helpaboutapp; ; invoicer.h Az Invoicer osztályt a QMainWindow osztályból származtatva hozzuk létre. Tevékenység objektumok létrehozását és inicializálásaát végző segédfüggvények Kilépésnél, rékérdezünk, biztos-e a dolgában. Deklaráljuk a tevékenység- (esemény-) kezelő slotokat, Deklarálunk egy nézetosztályt és egy dokumentum osztályt. (Doc/View architektura). Megadjuk a menüpontokat és egy eszköztárat. Deklaráljuk azokat az eseményeket (tevékenységeket), amelyeket a felhasználó aktivizálhat az alkalmazás futásakor. Az Invoicer osztály implementációja 14. oldal

15 #include <qapplication.h> #include <qaction.h> #include <qmenubar.h> #include <qpopupmenu.h> #include <qtoolbar.h> #include <qstatusbar.h> #include <qwhatsthis.h> #include <qstring.h> #include <qpixmap.h> #include <qmsgbox.h> #include <qfiledialog.h> #include <qaccel.h> #include "invoicer.h" Invoicer::Invoicer(QWidget *parent, const char *name) :QMainWindow(parent,name) setcaption(tr("invoicer Version 1.0 ")); // call inits to invoke all other construction parts initactions(); initmenubar(); inittoolbar(); initstatusbar(); initdoc(); initview(); viewtoolbar->seton(true); viewstatusbar->seton(true); A programban használt Qt elemek definíciója. Az Invoicer osztályt a QMainWindow osztályból származtatjuk. Ez lesz az ablak cimkesorában. Létrehozzuk és inicializáljuk az ablak egyes részeit. Inicializáljuk a doumentumot és a nézetet. Az eszköztár és a státuszsor jelenjen meg az ablakon. A konstruktorban létrehozzuk a szükséges widgeteket, inicializáljuk az adatokat kezelő dokumentum osztályt, valamint a nézet osztályt. A felhasználói felületen megjelenített szöveget azért foglaljuk be a tr() függvénybe, mert így a későbbiekben könnyen megvalósíthatjuk, hogy alkalmazásunk többféle nyelvi környezetben is futhasson. - Saját jegyzet 15. oldal

16 ."/'021435/46'7 8'1:9<; 1 = >?/A@CB D E$8"FGHI6H JAHF$;IHKD E";E"8$F void Invoicer::initActions() filenew = new QAction(tr("&New"), tr("ctrl+n"), this); filenew->seticonset(qpixmap::frommimesource("new.png")); filenew->setstatustip(tr("creates a new document")); filenew->setwhatsthis(tr("new File\n\nCreates a new document")); connect(filenew, SIGNAL(activated()), this, SLOT(slotFileNew())); fileopen = new QAction(tr("&Open..."), tr("ctrl+n"), this); fileopen->seticonset(qpixmap::frommimesource("open.png")); fileopen->setstatustip(tr("opens an existing document")); fileopen->setwhatsthis(tr("open File\n\nOpens an existing document")); connect(fileopen, SIGNAL(activated()), this, SLOT(slotFileOpen())); filesave = new QAction(tr("&Save"),tr("Ctrl+S"),this); filesave->seticonset(qpixmap::frommimesource("save.png")); filesave->setstatustip(tr("saves the actual document")); filesave->setwhatsthis(tr("save File.\n\nSaves the actual document")); connect(filesave, SIGNAL(activated()), this, SLOT(slotFileSave())); filesaveas = new QAction(tr("Save &as..."),0,this); filesaveas->setstatustip( tr("saves the actual document under a new filename")); filesaveas->setwhatsthis( tr("save As\n\nSaves the actual document under a new filename")); connect(filesaveas, SIGNAL(activated()), this, SLOT(slotFileSave())); filequit = new QAction(tr("E&xit"), tr("ctrl+q"), this); filequit->setstatustip(tr("quits the application")); filequit->setwhatsthis(tr("exit\n\nquits the application")); connect(filequit, SIGNAL(activated()), this, SLOT(slotFileQuit())); viewtoolbar = new QAction(tr("Tool&bar"), 0, this); viewtoolbar->settoggleaction(true); viewtoolbar->setstatustip(tr("enables/disables the toolbar")); viewtoolbar->setwhatsthis(tr("toolbar\n\nenables/disables the toolbar")); connect(viewtoolbar, SIGNAL(toggled(bool)), this, SLOT(slotViewToolBar(bool))); viewstatusbar = new QAction(tr("&Statusbar"), 0, this); viewstatusbar->settoggleaction(true); viewstatusbar->setstatustip(tr("enables/disables the statusbar")); viewstatusbar->setwhatsthis( tr("statusbar\n\nenables/disables the statusbar")); connect(viewstatusbar, SIGNAL(toggled(bool)), this, SLOT(slotViewStatusBar(bool))); helpaboutapp = new QAction(tr("&About..."), 0, this); helpaboutapp->setstatustip(tr("about the application")); helpaboutapp->setwhatsthis(tr("about\n\nabout the application")); connect(helpaboutapp, SIGNAL(activated()), this, SLOT(slotHelpAbout())); 16. oldal

17 d LNM4OQP$RTSOVU SWYXZ5U [?M4\QS ] ^"_"àz2_nbiob cab`"xbk] ^"X^"_$` A tevékenységek meghatározása után létrehozzuk az alkalmazás menüpontjait és eszköztárait, majd hozzárendeljük a menüpontokat ill. eszközgombokat a tevékenységekhez. e f$gihkj2l5monnhke5hqpsrtl"e5uvqw myx z void Invoicer::initMenuBar() // menubar entry filemenu filemenu=new QPopupMenu(); filenew->addto(filemenu); fileopen->addto(filemenu); filemenu->insertseparator(); filesave->addto(filemenu); filesaveas->addto(filemenu); filemenu->insertseparator(); filequit->addto(filemenu); // menubar entry viewmenu viewmenu=new QPopupMenu(); viewmenu->setcheckable(true); viewtoolbar->addto(viewmenu); viewstatusbar->addto(viewmenu); // menubar entry helpmenu helpmenu=new QPopupMenu(); helpaboutapp->addto(helpmenu); // MENUBAR CONFIGURATION menubar()->insertitem(tr("&file"), filemenu); menubar()->insertitem(tr("&view"), viewmenu); menubar()->insertseparator(); menubar()->insertitem(tr("&help"), helpmenu); V $~ $ ' Vƒ? 4 Q " "â 2 N Ši A ˆ"ƒ K "ƒ " "ˆ Œ Ž$ i k 2 5 o K 5 q ' i C 5 yš void Invoicer::initToolBar() // TOOLBAR filetoolbar = new QToolBar(this, "file operations"); filenew->addto(filetoolbar); fileopen->addto(filetoolbar); filesave->addto(filetoolbar); filetoolbar->addseparator(); QWhatsThis::whatsThisButton(fileToolbar); 17. oldal

18 œž Ÿi ' $ ' V I i A " Ÿ$ IŸ$ " ª«$ i k 2 5±o²² K«5 q³µ ³ 2³ 5¹$ºQ ±y»¼ void Invoicer::initStatusBar() //STATUSBAR statusbar()->message(tr("ready."), 2000); ½¾ "ÀIÁ$ "ÀI 4¾ Ã"ÄÆÅÈÇÁ É Ê4ËVÌ É ÒÓ Ô$ÕiÖk 2Ø5ÙoÚÚÖKÓ5ÖqÛsÜCÕ ÝÞ À Í Ì Î?Ê4ÏQÇ ¾ Ã"Ä$ aíaänðiëiðñ2ði $ÀIÐK¾ Ã"ÀÃ"Ä$ void Invoicer::initDoc() doc=new InvoicerDoc(); Részletesen később. ßàá"âIã$á"âIä á4à å"æèçqé2àaê ëiìyí"êaçvë îsá"âqïñðò"ó%ê ëkôõâé5ë î?ê4öq à å"æ$áaéaænðiçð í2ðiá$âiðkà å"âå"æ$á øù ú$ûiüký2þ5ÿ ükù5ü Tükþ void Invoicer::initView() // set the main widget here view=new InvoicerView(this, doc); setcentralwidget(view); Részletesen később.!"$#&%('*) +-,..0/21&+-, 324-5'*687 9 bool Invoicer::queryExit() int exit=qmessagebox::information(this, tr("quit..."), tr("do your really want to quit?"), QMessageBox::Ok, QMessageBox::Cancel); if (exit==qmessagebox::ok) return true; else return false; Az alkalmazás bezárásakor rákérdezünk, biztosan befejezte-e a munkát. Részletesen később. 18. oldal

19 C2D CPJ QSRDT?URVWDTXOYZL D ]^QSR`_aAbK\;$LTR2J*c Ebben a fejezetben megadjuk az alkalmazás által kezelt slotok minimális vázát. Ahogy haladunk előre a feladat megoldásában, úgy fogjuk kibővíteni az egyes slotok funkcióit. de$f&g(h*i j-k l ltm nogprqhnn*j-stj uwv x void Invoicer::slotFileNew() statusbar()->message(tr("creating new file...")); doc->newdoc(); statusbar()->message(tr("ready.")); yz$& (*~ - T ƒo r Nƒ* ˆ z\ Š void Invoicer::slotFileOpen() statusbar()->message(tr("opening file...")); QString filename = QFileDialog::getOpenFileName(0,0,this); if (!filename.isempty()) doc->load(filename); setcaption(filename); QString message=tr("loaded document: ")+filename; statusbar()->message(message, 2000); else statusbar()->message(tr("opening aborted"), 2000); Részletesen később. Œ$ &Ž( * - T ož r N * Ũ $ & š void Invoicer::slotFileSave() statusbar()->message(tr("saving file...")); doc->save(); statusbar()->message(tr("ready.")); œ $ž&ÿ( * - T oÿ r N * Uª$ž& «b void Invoicer::slotFileSaveAs() statusbar()->message(tr("saving file under new filename...")); QString fn = QFileDialog::getSaveFileName(0, 0, this); if (!fn.isempty()) doc->saveas(fn); else statusbar()->message(tr("saving aborted"), 2000); statusbar()->message(tr("ready.")); Részletesen később. Részletesen később. 19. oldal

20 $±&²(³* µ- T ¹o²ºr»³N¹*µ ¼¾½-³*º8 À void Invoicer::slotFileQuit() statusbar()->message(tr("exiting application...")); // exits the Application if(doc->ismodified()) if(queryexit()) qapp->quit(); else qapp->quit(); ; statusbar()->message(tr("ready.")); ÁÂ$Ã&Ä(Å*Æ Ç-È É ÉTÊ ËoÄÌ ÍÎÅ*Ç ÏÑÐ2Ä-Ä(ËÒtÓÈ8ÔÖÕ\ÄÄ2ËÌ8Ä (Ë*Ç Ø void Invoicer::slotViewToolBar(bool toggle) statusbar()->message(tr("toggle toolbar...")); if (toggle== false) filetoolbar->hide(); else filetoolbar->show(); statusbar()->message(tr("ready.")); ÙÚ$Û&Ü(Ý*Þ ß-à á átâ ãoüä åîý*ß æèçuä é äöêâ&ëté-àíìöî\ü-ü(ãä8üïï(ã*ß ð void Invoicer::slotViewStatusBar(bool toggle) statusbar()->message(tr("toggle statusbar...")); if (toggle == false) statusbar()->hide(); else statusbar()->show(); statusbar()->message(tr("ready.")); ñò$ó&ô(õ*ö -ø ù ùtú ûoôürýt &û0þ$ÿ ô \ü void Invoicer::slotHelpAbout() QMessageBox::about(this,tr("About..."), trutf8("invoicer\nversion 1.0 \n(c) 2004 by Szabóné Rozália") ); Nacsa A trutf8 függvény jól konvertálja az ékezetes karaktereket is. 20. oldal

21 =!#"%$'&(" Végül készítsük el alkalmazásunk főprogramját. main.cpp #include <qapplication.h> main.cpp #include "invoicer.h" int main(int argc, char *argv[]) QApplication app(argc, argv); Invoicer *invoicer=new Invoicer(); app.setmainwidget(invoicer); invoicer->show(); return app.exec(); A főprogramban létrehozzuk a QApplication típusú app objektumot. (Ilyen objektumból csak egy lehet minden alkalmazásban!). Mivel a Qt alkalmazás is képes parancssori paraméterek kezelésére, ezért átadjuk neki a main függvény argumentumait. A szabad tárterületen (heap) létrehozzuk az alkalmazásunk főablakának egy példányát (invoicer), az alkalmazásunknak jelezzük, hogy ez lesz a főablak, majd megjelenítjük a főablakot. A főablak bezárásakor minden, a főablakban létrehozott objektum törlődik, ezért itt nem szükséges a new mellett a delete használata. Ezután futtatjuk (exec) az alkalmazást. Az alkalmazás futása azt jelenti, hogy fut egy üzenetkezelő ciklus, amely várakozik a neki szóló események bekövetkezésére. (A többnyelvű alkalmazás készítését később mutatjuk meg.) )+*-,/ )-9:1;14< 1435 Ha lefordítjuk és összeszerkesztjük a projektet, majd futtatjuk azt, akkor a főabklakban megjelenik a számla. Ezen a ponton kisérletezhetünk az egyes vezérlőelemek viselkedésével. Figyelje meg a státusz sorban megjelenő szövegeket. Nézze meg mi történik, ha a File/Open parancsot adja ki. Természetesen ezzel még nem készült el a teljes alkalmazás. A feladat további részét az SDI alkalmazás készítése Qt-ben II, III munkafüzetekben mutatjuk meg. Saját jegyzet 21. oldal

22 >? A projektet összeállíthatja a Qt parancssori eszközeivel is. 1. Hozzon létre a projekt számára egy könyvtárat: invoicer 2. Hozza létre (vagy a honlapomról töltse le) az alábbi fájlokat: main.cpp, invoicer.h,, invoicerdoc.h, invoicerdoc.cpp, invoicerview.h, invoicerview.cpp, invoicerviewbase.ui. 3. Hozza létre a projekt könyvtárában az images könyvtárat, és másolja oda az ikonok kép fájljait: new.png, open.png, save.png 4. Nyisson meg egy terminál ablakot. Legyen a projekt könyvtárban (invoicer). 5. Hozza létre a platformfüggetlen projekt fájlt (invoicer.pro): qmake -project 6. A képek (ikonok) alkalmazása miatt az automatikusan generált projekt fájlt (invoicer.pro) egészítse ki az alábbiak szerint: ###################################################################### # Automatically generated by qmake (1.06c) Sun Mar 21 17:41: ###################################################################### TEMPLATE = app INCLUDEPATH +=. # Input HEADERS += invoicer.h invoicerdoc.h invoicerview.h INTERFACES += invoicerviewbase.ui SOURCES += invoicerdoc.cpp invoicerview.cpp main.cpp IMAGES = images/new.png\ images/open.png\ images/save.png 7. Hozza létre a platform függő make fájlt: qmake invoicer.pro 8. Fordítsa/Szerkessze a programot: make 9. Futtassa a programot:./invoicer A projektet alkotó összetevők forrása letölthető a people.inf.elte.hu/nacsa honlapról. 22. oldal

Elemi alkalmazások fejlesztése III

Elemi 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észletesebben

Elemi alkalmazások fejlesztése III

Elemi 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észletesebben

C++/Qt alapú SDI alkalmazás készítése II...2

C++/Qt alapú SDI alkalmazás készítése II...2 ...2 Feladat...2 A dokumentum típus módosítása...2 A fejlécet ábrázoló mezők deklarálása...3 Mező lekérdező műveletek...3 Mező beállító slotok...3 Az adatbeviteli mezők és az adattagok összekötése...4

Részletesebben

ELTE Informatikai Kar

ELTE Informatikai Kar Qt SDI alkalmazás készítése II...2 Feladat...2 A dokumentum típus módosítása...2 A fejlécet ábrázoló mezők bevezetése...3 A bevezetett mezők lekérdező műveletei...3 A bevezetett mezők beállító slotjai...3

Részletesebben

Alkalmazások fejlesztése III. Qt 4 /C++ alapú grafikus alkalmazás Bevezetés I.

Alkalmazá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észletesebben

Elemi alkalmazások fejlesztése III.

Elemi 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észletesebben

Elemi alkalmazások fejlesztése IV. Adatbáziskezelő alkalmazás készítése C++/Qt ben I.

Elemi alkalmazások fejlesztése IV. Adatbáziskezelő alkalmazás készítése C++/Qt ben I. Tartalomjegyzék Adatbáziskezelő alkalmazás készítése C++/Qt ben I...3 A MySQL adatbáziskezelő használatba vétele...3 Az alkalmazás adatbázisa...4 A Qt/Sql modul...5 Az adatbázis és az alkalmazás összekapcsolása...5

Részletesebben

Alkalmazások fejlesztése III. Qt 4 /C++ alapú MDI alkalmazás: Számlakészítő program 3/3

Alkalmazások fejlesztése III. Qt 4 /C++ alapú MDI alkalmazás: Számlakészítő program 3/3 Tartalomjegyzék Feladat...2 Az alkalmazás osztálydiagramja...2 Űrlap elkészítése...3 Grafikus felület kialakítása...3 A felületen elhelyezett elemek...3 invoiceform.h...3 invoiceform.cpp...5 Főablak elkészítése...11

Részletesebben

Elemi alkalmazások fejlesztése III.

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észletesebben

Elemi alkalmazások fejlesztése III.

Elemi 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észletesebben

Elemi 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. 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észletesebben

Elemi alkalmazások fejlesztése III

Elemi 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észletesebben

Elemi alkalmazások fejlesztése III

Elemi alkalmazások fejlesztése III Elemi alkalmazások fejlesztése III C++/ Qt alapú SDI alkalmazás készítése III. Készítette: Szabóné Nacsa Rozália Steingart Ferenc 1 Ami már kész van: Készítettünk egy Qt SDI alkalmazást. 2 Ami már kész

Részletesebben

Budapest, 2007. március. ELTE Informatikai Kar

Budapest, 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észletesebben

MySql elindítása. Elemi alkalmazások fejlesztése IV. Feladat. Az alkalmazás adatbázisa

MySql 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észletesebben

Elemi alkalmazások fejlesztése IV.

Elemi 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észletesebben

Elemi alkalmazások fejlesztése III

Elemi alkalmazások fejlesztése III Elemi alkalmazások fejlesztése III SDI alkalmazás készítése Qt-ben III. Készítette: Szabóné Nacsa Rozália Steingart Ferenc Ami már kész van: Készítettünk egy Qt SDI alkalmazást. Ami már kész van: Megterveztük

Részletesebben

Egységes és objektumközpontú adatbázis-kezelés (2. rész)

Egysé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észletesebben

Alkalmazások fejlesztése III. Qt 4 /C++ alapú MDI alkalmazás: Számlakészítő program 1/3

Alkalmazások fejlesztése III. Qt 4 /C++ alapú MDI alkalmazás: Számlakészítő program 1/3 Tartalomjegyzék Feladat...2 A számla elemei...2 A dokumentumot tároló fájl felépítése...3 A számlakészítő program osztálydiagramja...4 Field osztály...4 field.h...4 field.cpp...5 Fields osztály...6 fields.h...6

Részletesebben

Elemi alkalmazások fejlesztése III.

Elemi 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észletesebben

Alkalmazások fejlesztése III. Qt 4 /C++ alapú MDI alkalmazás: Számlakészítő program 2/3

Alkalmazások fejlesztése III. Qt 4 /C++ alapú MDI alkalmazás: Számlakészítő program 2/3 Tartalomjegyzék Feladat...2 Az alkalmazás osztálydiagramja...2 Modell-nézet (model-view) tervezési minta (bevezetés)...3 Számlatételek kezelése, karbantartása ( táblázat kezelés )...4 A táblázatkezelő

Részletesebben

3D-s számítógépes geometria és alakzatrekonstrukció

3D-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észletesebben

Tervezőeszközök, fejlesztőeszközök használata Qt alapú alkalmazásoknál. Saját vezérlő használata tervezőben (worldclocks)

Tervező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észletesebben

3. Osztályok II. Programozás II

3. 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észletesebben

Elemi alkalmazások fejlesztése III

Elemi 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észletesebben

Elemi alkalmazások fejlesztése III.

Elemi 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észletesebben

Elemi 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 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észletesebben

QLabel *label = new Qlabel("Hello Qt!",0);

QLabel *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észletesebben

Grafikus Qt programok írása segédeszközök nélkül

Grafikus 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észletesebben

Adatbázis-kezelés ODBC driverrel

Adatbázis-kezelés ODBC driverrel ADATBÁZIS-KEZELÉS ODBC DRIVERREL... 1 ODBC: OPEN DATABASE CONNECTIVITY (NYÍLT ADATBÁZIS KAPCSOLÁS)... 1 AZ ODBC FELÉPÍTÉSE... 2 ADATBÁZIS REGISZTRÁCIÓ... 2 PROJEKT LÉTREHOZÁSA... 3 A GENERÁLT PROJEKT FELÉPÍTÉSE...

Részletesebben

Vizuális és eseményvezérelt programozás , II. félév BMF NIK

Vizuális és eseményvezérelt programozás , II. félév BMF NIK Vizuális és eseményvezérelt programozás 2006 2007, II. félév BMF NIK MDI szövegszerkesztő Az SDI és az MDI Szülő- és gyermekablakok Menürendszer MDI alkalmazáshoz A gyermekablakok elrendezése RichTextBox

Részletesebben

3D-s számítógépes geometria és alakzatrekonstrukció

3D-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észletesebben

Eseményvezérelt alkalmazások

Eseményvezérelt alkalmazások Szabóné Nacsa Rozália nacsa@inf.elte.hu Eseményvezérelt alkalmazások A Windows alkalmazások eseményvezérelt alkalmazások Esemény: egér kattintás billenty leütés stb. Üzenetkezelés Operációs rendszer kódja

Részletesebben

Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék

Statikus 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észletesebben

SDI ALKALMAZÁS I. Workspace / ResourceView / Toolbar / IDR_MAINFRAME. Workspace / ResourceView / Menu / IDR_MAINFRAME

SDI 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

Elemi alkalmazások fejlesztése

Elemi alkalmazások fejlesztése Egyablakos alkalmazás készítése II...2 Osztályszerkezet...3 Modulszerkezet...3 A kérdés rekord felépítése: Question...4 A kérdéssor típus: QuestionIterator...4 A QuestionIterator osztály beillesztése a

Részletesebben

Elemi alkalmazások fejlesztése IV. Adatbáziskezel alkalmazás készítése QtDesignerben. Készítette: Szabóné Nacsa Rozália

Elemi alkalmazások fejlesztése IV. Adatbáziskezel alkalmazás készítése QtDesignerben. Készítette: Szabóné Nacsa Rozália Elemi alkalmazások fejlesztése IV. Adatbáziskezel ő alkalmazás készítése QtDesignerben Készítette: Szabóné Nacsa Rozália 1 Származtatásos modulszerkezet Q t form.ui U formbase.h Örökl ő dés form.h formbase.cpp

Részletesebben

A slotfilequit() módosítása...18 Ami még hátra van...18 Projekt összeállítása Qt parancsokkal...19

A slotfilequit() módosítása...18 Ami még hátra van...18 Projekt összeállítása Qt parancsokkal...19 ...2 Feladat...2 Beviteli mezők ellenőrzése...2 Ellenőrző objektumok (Validátorok)...3 QValidator::State...3 QValidator::validate()...3 QValidator::fixup()...3 Az adatbevitel ellenőrzésének lépései...3

Részletesebben

Szoftvertechnolo gia gyakorlat

Szoftvertechnolo 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észletesebben

Szabóné Nacsa Rozália. Feladat. Készítsünk el egy üres FormView alapú alkalmazást és építsünk köré egy súgó környezetet.

Szabóné Nacsa Rozália. Feladat. Készítsünk el egy üres FormView alapú alkalmazást és építsünk köré egy súgó környezetet. Szabóné Nacsa Rozália Feladat Készítsünk el egy üres FormView alapú alkalmazást és építsünk köré egy súgó környezetet. 1 Tartalom Tárgymutató 2 Keresés Menüpontok 3 HTML oldalak HTML oldalak felsorolása

Részletesebben

Programozási technológia

Programozási technológia Programozási technológia Swing GUI készítése NetBeans IDE segítségével Dr. Szendrei Rudolf ELTE Informatikai Kar 2018. Bevezető Eddig a grafikus felhasználói felületet kódból hoztuk létre kézzel. A mi

Részletesebben

Elemi alkalmazások fejlesztése I.

Elemi alkalmazások fejlesztése I. Steingart Ferenc el adása alapján készítette: Szabóné Nacsa Rozália Integrált fejleszt környezet Linux MS Win* www.kdevelop.org www.bloodshed.net Bevezetés 1 A kdevelop f ablaka Editor és böngész Projektszerkezet

Részletesebben

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Programozá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észletesebben

A gyakorlat során az alábbi ábrán látható négy entitáshoz kapcsolódó adatbevitelt fogjuk megoldani.

A gyakorlat során az alábbi ábrán látható négy entitáshoz kapcsolódó adatbevitelt fogjuk megoldani. Vizuális programozás 1. A gyakorlat célja A gyakorlat célja a Könyvtár alkalmazás folytatása az előző gyakorlaton elkészített grafikus felület felhasználásával. Elsőként lemásoljuk az előző gyakorlat eredményeként

Részletesebben

Qt rajzolás munkafüzet. Elemi Alkalmazások fejlesztése 3.

Qt rajzolás munkafüzet. Elemi Alkalmazások fejlesztése 3. Qt rajzolás munkafüzet Elemi Alkalmazások fejlesztése 3. 1. fejezet Impresszum Qt rajzolás munkafüzet (C)2006 Zimler Attila Tamás Visszajelzéseket szivesen fogadok. A munkafüzet

Részletesebben

Adatbázis-kezelés API hívásokkal. Adatbázis-kezelés ODBC-vel. Adatbázis-kezelés SQL parancsokkal. Adatbázis-kezelés ODBC-vel.

Adatbázis-kezelés API hívásokkal. Adatbázis-kezelés ODBC-vel. Adatbázis-kezelés SQL parancsokkal. Adatbázis-kezelés ODBC-vel. Adatbázis-kezelés API hívásokkal hívások Adatbázis-kezelés -vel Készítette: Szabóné Nacsa Rozália 2004. november API 2 API 2 hívások Adatbázis-kezelés parancsokkal Adatbázis-kezelés -vel eljárások 1 parancsok

Részletesebben

ESEMÉNY VEZÉRELT ALKALMAZÁSOK FEJLESZTÉSE I. Bevezetés. Készítette: Gregorics Tibor

ESEMÉNY VEZÉRELT ALKALMAZÁSOK FEJLESZTÉSE I. Bevezetés. Készítette: Gregorics Tibor ESEMÉNY VEZÉRELT ALKALMAZÁSOK FEJLESZTÉSE I. Bevezetés Készítette: Gregorics Tibor Előfeltétel: OAF (EAF2) Kötelező házi feladatok: 4 darab feladat max. 5-5 pontért Feltételek 2 hét késés: legfeljebb 3

Részletesebben

Két csomag elemeiből lehet a felületet elkészíteni: awt: heavy weight komponensek; swing: light weight komponensek (időben később).

Két csomag elemeiből lehet a felületet elkészíteni: awt: heavy weight komponensek; swing: light weight komponensek (időben később). Grafikus felhasználói felület Két csomag elemeiből lehet a felületet elkészíteni: awt: heavy weight komponensek; swing: light weight komponensek (időben később). Mi hogyan használjuk? awt: eseménykezelés,

Részletesebben

Java Programozás 11. Ea: MVC modell

Java Programozás 11. Ea: MVC modell Java Programozás 11. Ea: MVC modell 20/1 B ITv: MAN 2018.03.02 MVC Model-View-Controller A modell-nézet-vezérlő a szoftvertervezésben használatos szerkezeti minta. Az MVC célja elválasztani az üzleti logikát

Részletesebben

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK Horváth Győző Egyetemi adjunktus 1117 Budapest, Pázmány Péter sétány 1/C, 2.420 Tel: (1) 372-2500/1816 2 Ismétlés Ismétlés 3 Fájl/Adatbázis 3 4 Szerver 2 CGI

Részletesebben

Feladat. Tervezés és implementálás

Feladat. Tervezés és implementálás Tartalomjegyzék FELADAT...2 Elvárások...2 TERVEZÉS ÉS IMPLEMENTÁLÁS...2 Megjelenési terv...2 Grafikus felület készítése...3 Modulszerkezet...3 Osztály diagram...3 MillMain form...4 Vezérlő k elrendezése...4

Részletesebben

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Pelda ö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észletesebben

Sorosítás (szerializáció) és helyreállítás. 1. Bináris sorosítás és helyreállítás. 1.1. Szükséges névterek. 1.2. Attribútumok. 1.3.

Sorosítás (szerializáció) és helyreállítás. 1. Bináris sorosítás és helyreállítás. 1.1. Szükséges névterek. 1.2. Attribútumok. 1.3. Sorosítás (szerializáció) és helyreállítás Cél: a memóriában tárolt adatok egyszerű lemezre mentése és visszatöltése. A sorosítás során létrehozunk egy állományt és egy sorosítást kezelő objektumot. Ez

Részletesebben

Johanyák Zsolt Csaba: Ugráló gomb oktatási segédlet Copyright 2008 Johanyák Zsolt Csaba

Johanyá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észletesebben

Java Programozás 5. Gy: Java alapok. Adatkezelő 1.rész

Java Programozás 5. Gy: Java alapok. Adatkezelő 1.rész Java Programozás 5. Gy: Java alapok Adatkezelő 1.rész 27/1 B ITv: MAN 2018.04.13 Feladat Egy nagyon hosszú feladatmegoldásba kezdünk bele: létrehozunk egy adatkezelő programot, sok-sok extrával: 27/2 A

Részletesebben

Swing GUI készítése NetBeans IDE segítségével

Swing GUI készítése NetBeans IDE segítségével Programozási Swing e NetBeans IDE segítségével Informatikai Kar Eötvös Loránd Tudományegyetem 1 Tartalom 1 2 2 Eddig a grafikus felhasználói felületet kódból hoztuk létre kézzel. A mi feladatunk volt az

Részletesebben

Felhasználó által definiált adattípus

Felhasználó által definiált adattípus Felhasználó által definiált adattípus C++ Izsó Tamás 2017. február 24. Izsó Tamás Felhasználó által definiált adattípus/ 1 Irodalom Izsó Tamás Felhasználó által definiált adattípus/ 2 Programtervezési

Részletesebben

Adabáziselérés ODBC-n keresztül utasításokkal C#-ban

Adabáziselérés ODBC-n keresztül utasításokkal C#-ban Adabáziselérés ODBC-n keresztül utasításokkal C#-ban 1. Előkészítés Access adatbázis lemásolása, ODBC DSN létrehozása Másoljuk le az alábbiakat: Mit Honnan Hova list.mdb p:\johanyák Csaba\Vizualis programozas\data\

Részletesebben

4. Öröklődés. Programozás II

4. Öröklődés. Programozás II 4. Öröklődés Programozás II Mielőtt belevágunk Egy Tárgy típusú objektumokat tároló tömb i. elemében tároljunk el egy új tárgyat Rossz módszer: tomb[i].setnev( uj.getnev() ); tomb[i].setertek( uj.getertek()

Részletesebben

Programozás C++ -ban

Programozá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észletesebben

Programozás II gyakorlat. 4. Öröklődés

Programozás II gyakorlat. 4. Öröklődés Programozás II gyakorlat 4. Öröklődés Feladat Egy játékfejlesztő cég olyan programot fejleszt, amely nyilvántartja az alkalmazottai adatait. Tároljuk minden személy: Nevét (legfeljebb 50 karakter) Születési

Részletesebben

munkafüzet open eseményéhez

munkafüzet open eseményéhez Makrók használata az Excelben - munkafüzet open eseményéhez VBA-eljárás létrehozása Az Auto_Open makróval kapcsolatos fenti korlátozások megkerülhetők az Open eseményhez rendelt VBA-eljárással. Példa Auto_open

Részletesebben

és az instanceof operátor

é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észletesebben

Johanyák Zsolt Csaba: Grafikus felület programozása. http://www.johanyak.hu e-mail: johanyak.csaba@gamf.kefo.hu Copyright 2008 Johanyák Zsolt Csaba

Johanyák Zsolt Csaba: Grafikus felület programozása. http://www.johanyak.hu e-mail: johanyak.csaba@gamf.kefo.hu Copyright 2008 Johanyák Zsolt Csaba Johanyák Zsolt Csaba: Grafikus felület programozása http://www.johanyak.hu e-mail: johanyak.csaba@gamf.kefo.hu Copyright 2008 Johanyák Zsolt Csaba 1. Gyümölcsárazó automata Készítsünk egy gyümölcsárazó

Részletesebben

Java 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. 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észletesebben

ISA szimulátor objektum-orientált modell (C++)

ISA szimulátor objektum-orientált modell (C++) Budapesti Műszaki és Gazdaságtudományi Egyetem ISA szimulátor objektum-orientált modell (C++) Horváth Péter Elektronikus Eszközök Tanszéke 2015. február 12. Horváth Péter ISA szimulátor objektum-orientált

Részletesebben

Adatbázis-kezelés ODBC-vel

Adatbázis-kezelés ODBC-vel Adatbázis-kezelés ODBC-vel Készítette: Szabóné Nacsa Rozália 2004. november Adatbázis-kezelés API hívásokkal Alkalmazás Adatbázis 1 API 1 API 1 hívások Adatbázis 2 API 2 Alkalmazás API 2 hívások Adatbázis-kezelés

Részletesebben

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor Java Programozás 4. Gy: Java GUI Tipper, MVC kalkulátor 15/1 B ITv: MAN 2018.03.10 1. Feladat: Tipper Készítsük el a tippelős programunk grafikus változatát. Az üzleti logika kódja megvan, a felület pedig

Részletesebben

C++ programozási nyelv Konstruktorok-destruktorok

C++ 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észletesebben

A jobboldalon a pnlright egy Stacked Widget Állítsuk be az első lapot és nevezzük el pnldraw-ra:

A 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észletesebben

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra Programozás II. 2. gyakorlat Áttérés C-ről C++-ra Tartalom Új kommentelési lehetőség Változók deklarációjának helye Alapértelmezett függvényparaméterek Névterek I/O műveletek egyszerűsödése Logikai adattípus,

Részletesebben

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) közönséges felhasználók SQL*Plus Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP dolgozó), DEPT osztály) "közönséges" felhasználók Adatszótár: metaadatokat tartalmazó, csak olvasható táblák táblanév-prefixek:

Részletesebben

Eseményvezérelt alkalmazások fejlesztése I 7. előadás. Összetett grafikus felületű alkalmazások. Giachetta Roberto

Eseményvezérelt alkalmazások fejlesztése I 7. előadás. Összetett grafikus felületű alkalmazások. Giachetta Roberto Eötvös Loránd Tudományegyetem Informatikai Kar Eseményvezérelt alkalmazások fejlesztése I 7. előadás Összetett grafikus felületű alkalmazások Giachetta Roberto http://people.inf.elte.hu/groberto Ablakok

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java statikus programszerkezet Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 2. előadás csomag könyvtárak könyvtárak forrásfájlok bájtkódok (.java) (.class) primitív osztály

Részletesebben

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész Java Programozás 9. Gy: Java alapok Adatkezelő 5.rész 15/1 B ITv: MAN 2018.04.22 A Keresés funkció Programlogika: 1. A keresés az etm táblamodellben fog keresni, és a találat rekordokat átmásolja egy másik

Részletesebben

Grafikus felhasználói felületek. Dr. Szendrei Rudolf Informatikai Kar Eötvös Loránd Tudományegyetem. Programozási technológia I. Dr.

Grafikus felhasználói felületek. Dr. Szendrei Rudolf Informatikai Kar Eötvös Loránd Tudományegyetem. Programozási technológia I. Dr. Programozási Grafikus Informatikai Kar Eötvös Loránd Tudományegyetem 1 Tartalom 1 2 Grafikus felhasználói felület Két csomag elemeiből lehet a felületet elkészíteni awt: heavy weight" komponensek swing:

Részletesebben

Eseményvezérelt alkalmazások fejlesztése I 6. előadás. Összetett alkalmazások megvalósítása. Giachetta Roberto

Eseményvezérelt alkalmazások fejlesztése I 6. előadás. Összetett alkalmazások megvalósítása. Giachetta Roberto Eötvös Loránd Tudományegyetem Informatikai Kar Eseményvezérelt alkalmazások fejlesztése I 6. előadás Összetett alkalmazások megvalósítása Giachetta Roberto A jegyzet az ELTE Informatikai Karának 2014.

Részletesebben

Programozási technológia I. programból! A Gomb4 megoldásból induljunk ki!

Programozási technológia I. programból! A Gomb4 megoldásból induljunk ki! Menü Menü Egészítsük ki a kattintás számláló programot egy menüvel, amelyben nullázhatjuk a számláló értékét, illetve kiléphetünk a programból! A Gomb4 megoldásból induljunk ki! Menü Menüsor felépítése

Részletesebben

Programozási alapismeretek 4.

Programozási alapismeretek 4. Programozási alapismeretek 4. Obejktum-Orientált Programozás Kis Balázs Bevezetés I. Az OO programozási szemlélet, egy merőben más szemlélet, az összes előző szemlélettel (strukturális, moduláris, stb.)

Részletesebben

Hozzunk létre két rekordot a táblában, majd véglegesítsünk (commit):

Hozzunk létre két rekordot a táblában, majd véglegesítsünk (commit): Oracle adatbázis elérése A gyakorlat célja az, hogy a hallgató tapasztalatot szerezzen egy szerver oldali adatbázis kezelő rendszer elérésében, gyakorolja a vizuális eszközök és a kapcsolat nélküli (Disconnected

Részletesebben

Elemi Alkalmazások Fejlesztése II.

Elemi Alkalmazások Fejlesztése II. Elemi Alkalmazások Fejlesztése II. Osztályok közötti kapcsolatok öröklődés asszociáció aggregáció kompozíció 1. Feladat Készítsünk programot, amellyel testek térfogatát határozhatjuk meg, illetve megadhatjuk

Részletesebben

17. Többdokumentumos alkalmazások készítése..3 A többdokumentumos felület...3. A program elkészítése...27

17. Többdokumentumos alkalmazások készítése..3 A többdokumentumos felület...3. A program elkészítése...27 vi 18. Szöveges input- és outputkezelés...........25 Szöveg kiírása.............................25 A program elkészítése........................5 A programhoz tartozó osztályok, fájlok és forráskód......8

Részletesebben

Access adatbázis elérése OLE DB-n keresztül

Access adatbázis elérése OLE DB-n keresztül Access adatbázis elérése OLE DB-n keresztül Készítsünk egy grafikus felülető alkalmazást, ami lehetıvé teszi egy Access adatbázisban tárolt hallgatói adatok (EHA, Név, e-mail cím) lekérdezését (összes

Részletesebben

Pénzügyi algoritmusok

Pénzügyi algoritmusok Pénzügyi algoritmusok A C++ programozás alapjai Sztringek Osztályok alapjai Sztringek Szöveges adatok kezelése Sztring Karakterlánc (string): Szöveges adat Karaktertömbként tárolva A szöveg végét a speciális

Részletesebben

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015 Objektumorientált programozás Pál László Sapientia EMTE, Csíkszereda, 2014/2015 7. ELŐADÁS Több információ az alkalmazásban - Fülek az űrlapon - Több űrlapos alkalmazások 2 Több információ az alkalmazásban

Részletesebben

1. Alapok. Programozás II

1. 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észletesebben

OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1.

OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1. OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1. Feladat Szimuláljuk különféle élőlények túlélési versenyét. A lények egy pályán haladnak végig, ahol váltakozó viszonyok vannak. Egy lénynek

Részletesebben

HVK Adminisztrátori használati útmutató

HVK Adminisztrátori használati útmutató HVK Adminisztrátori használati útmutató Tartalom felöltés, Hírek karbantartása A www.mvfportal.hu oldalon a bejelentkezést követően a rendszer a felhasználó jogosultsági besorolásának megfelelő nyitó oldalra

Részletesebben

Programozás C++ -ban 2007/4

Programozá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észletesebben

Avery Design Pro 4.0

Avery Design Pro 4.0 Avery Design Pro 4.0 Felhasználói útmutató Az Avery Design egy egyszerű, de sokfunkciós, könnyen kezelhető címkenyomtató, kártyatervező program. Készítsük el a kártyasablont Indításkor az Üdvözlő ablak

Részletesebben

BME MOGI Gépészeti informatika 8.

BME MOGI Gépészeti informatika 8. BME MOGI Gépészeti informatika 8. 1. feladat Készítse beosztottak és vezetők munkahelyi adatait kezelő alkalmazást! A feladat megoldásához hozza létre a következő osztályokat! Beosztott osztály: adatmező

Részletesebben

1. Gyakorlat: Telepítés: Windows Server 2008 R2 Enterprise, Core, Windows 7

1. Gyakorlat: Telepítés: Windows Server 2008 R2 Enterprise, Core, Windows 7 1. Gyakorlat: Telepítés: Windows Server 2008 R2 Enterprise, Core, Windows 7 1.1. Új virtuális gép és Windows Server 2008 R2 Enterprise alap lemez létrehozása 1.2. A differenciális lemezek és a két új virtuális

Részletesebben

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben? 1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben? 3. Ismertesse a névtér fogalmát! 4. Mit értünk a "változó hatóköre"

Részletesebben

A Java nyelv. Dialógus ablakok. Elek Tibor

A Java nyelv. Dialógus ablakok. Elek Tibor A Java nyelv Dialógus ablakok Elek Tibor Dialógus ablakok Szerepe: felbukkanó ablak (üzenet, input) Felépítése, használata majdnem ua., mint JFrame Tulajdonos: lehet tulajdonosa, amellyel együtt ikonizálódik,

Részletesebben

Grafikus felhasználói felületek, eseménykezelés

Grafikus felhasználói felületek, eseménykezelés Programozási Grafikus felhasználói felületek, eseménykezelés alapjai Informatikai Kar Eötvös Loránd Tudományegyetem 1 Tartalom 1 2 alapjai 3 alapjai 2 alapjai Egészítsük ki a már korábban elkészített Számláló

Részletesebben

OOP: Java 8.Gy: Abstract osztályok, interfészek

OOP: Java 8.Gy: Abstract osztályok, interfészek OOP: Java 8.Gy: Abstract osztályok, interfészek 26/1 B ITv: MAN 2019.04.03 Abszrakt metódus és absztrakt osztály. Gyakran előfordul a tervezés során, hogy egy osztály szintjén tudjuk, hogy valamilyen metódus

Részletesebben

Makrók használata az Excelben - Makróhibák kezelése, biztonságos jelszavak generálása

Makrók használata az Excelben - Makróhibák kezelése, biztonságos jelszavak generálása Makrók használata az Excelben - Makróhibák kezelése, biztonságos jelszavak generálása Makróhibák kezelése A Visual Basic szerkesztőablakában szerkesztés közben elindított futtatással ellenőrizhetjük a

Részletesebben

Diákigazolvány. Belépés> Adminisztráció> Iskolai oktatás képes menü> diákigazolvány> diákigazolvány igénylés

Diákigazolvány. Belépés> Adminisztráció> Iskolai oktatás képes menü> diákigazolvány> diákigazolvány igénylés Tartalom Új diákigazolvány igénylés folyamata... 2 1. IAR feltöltéshez szükséges jogosultságok beállítása... 2 2. Token kérés... 2 3. Új igénylés feladása... 2 Igénylések keresése, szinkronizálása... 4

Részletesebben

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.

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. 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észletesebben