C++/Qt alapú SDI alkalmazás készítése II...2
|
|
- Kornélia Orbánné
- 5 évvel ezelőtt
- Látták:
Átírás
1 ...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 Számlatételek kezelése...4 Az InvoiceItem osztály...5 Az InvoiceItem osztály definíciója és (!) implementációja...5 A dokumentum osztály számlatétel listája (_items)...6 Új számlatétel felvitele...6 Új dialógusablak létrehozása...6 A dialógusablak felépítése...7 A dialógusablak paraméterezése...7 A dialógusablakon elhelyezett elemek paraméterezése...7 Új menüpont elhelyezése az alkalmazásban (Items/New)...8 Az itemsnew tevékenység és az azt kezelő slot definíciója...8 Az itemsnew tevékenység objektum létrehozása és inicializálása...9 Az itemsnew tevékenység beillesztése a menübe...9 A slotitemsnew() implementálása...10 Új tétel beillesztése a számlába...11 Új tétel hozzáadása a dokumentumhoz (számlához)...12 Új számlatétel megjelenítése a nézet tétellistájában...12 Számlatétel módosítása...13 Számlatétel felismerése...14 Új sor típus bevezetése származtatással (ListViewInvoiceItem)...14 A ListViewInvoiceItem beágyazott osztály definíciója és implemetációja...15 Új menüpontok elhelyezése az alkalmazásban (Items/Edit; Items/Remove)...16 A itemsedit/itemsremove tevékenységek deklarációja...16 Az itemsedit és itemsremove tevékenység objektumok létrehozása és inicializálása...17 Az itemsedit és itemsremove tevékenységek beillesztése a menübe...17 Az itemsedit slot implementációja (slotitemsedit() )...17 Az itemsremove slot implementációja (slotitemsremove())...19 Új műveletek a dokumentum osztályban (setmodified(), removeitem())...19 Ami még hátra van...19 Projekt összeállítása Qt parancsokkal...20 A munkafüzet programjai letölthetők a people.inf.elte.hu/nacsa/eaf3/projects/2005/invoicer2 címről. A munkafüzetben bemutatott programok készítésekor KDevelop t és Qt et használtam. Készítette: Szabóné Nacsa Rozália nacsa@inf.elte.hu honlap: people.inf.elte.hu/nacsa Budapest, 2006 május 1. oldal
2 Ebben a munkafüzetben feltételezzük, hogy Ön már feldolgozta a C++/Qt alapú SDI alkalmazás készítése I munkafüzetet. Az előző munkafüzetben elkészítettünk egy SDI alkalmazást Qt-ben, továbbá a Qt Designer segítségével felépítettük a view osztály felhasználói felületét. Feladat 1. A számla típus (doc) és a hozzátartozó számlatétel típus megvalósítása 2. A számla és a view összekötése 3. Számlatétel felvitele, javítása, törlése 4. Számla mentése, beolvasása A dokumentum típus módosítása Alkalmazásunk dokumentuma maga a számla, ezért az előző munkafüzetben elkészített általános dokumentum osztály kibővítésével készítjük el a számlát reprezentáló dokumentum osztályt. A dokumentum osztály privát részébe felvesszük a számla fejlécébe tartozó mezőket, a publikus részben elhelyezzük e mezők értékeit lekérdező műveleteket, valamint a mezők értékeit beállító slotokat. 2. oldal
3 A fejlécet ábrázoló mezők deklarálása class InvoicerDoc : public QObject protected: bool modified; QString _customer; QString _zip; QString _city; QString _street; QString _invno; QString _released; QString _fulfilled; QString _dueto; ; Mező lekérdező műveletek class InvoicerDoc : public QObject Q_OBJECT public: bool ismodified() const; const QString customer() const return _customer; const QString zip() const return _zip; const QString city() const return _city; const QString street() const return _street; const QString invno() const return _invno; const QString released() const return _released; const QString fulfilled() const return _fulfilled; const QString dueto() const return _dueto; ; Mező beállító slotok class InvoicerDoc : public QObject signals: void documentchanged(); public slots: void setcustomer(const QString &txt) _customer=txt; void setzip(const QString &txt) _zip=txt; void setcity(const QString &txt) _city=txt; void setstreet(const QString &txt) _street=txt; void setinvno(const QString &txt) _invno=txt; void setreleased(const QString &txt) _released=txt; void setfulfilled(const QString &txt) _fulfilled=txt; void setdueto(const QString &txt) _dueto=txt; ; invoicerdoc.h invoicerdoc.h invoicerdoc.h 3. oldal
4 Az adatbeviteli mezők és az adattagok összekötése A view osztályban megvalósított számla fejlécében szereplő adatbeviteli mezőket hozzákötjük a dokumentum megfelelő adattagjaihoz. Ehhez a signal/slot mechanizmust használjuk. Az összekötéseket a view osztály konstruktorában helyezzük el. #include <qlineedit.h> InvoicerView::InvoicerView(QWidget *parent, InvoicerDoc *doc) : //invoicerview.cpp InvoicerViewBase(parent) connect(doc, SIGNAL(documentChanged()), this, SLOT(slotDocumentChanged())); invoicerview.cpp A connect-ben szerepl ő változók Q LineEdit típusúak, így az ezt definiáló fájlt be kell illeszteni a forrásfájlunkba. connect(customer, SIGNAL(textChanged(const QString&)), doc, SLOT(setCustomer(const QString&))); connect(zip, SIGNAL(textChanged(const QString&)), doc, SLOT(setZip(const QString&))); connect(city, SIGNAL(textChanged(const QString&)), doc, SLOT(setCity(const QString&))); connect(street, SIGNAL(textChanged(const QString&)), doc, SLOT(setStreet(const QString&))); connect(invno, SIGNAL(textChanged(const QString&)), doc, SLOT(setInvNo(const QString&))); connect(released, SIGNAL(textChanged(const QString&)), doc, SLOT(setReleased(const QString&))); connect(fulfilled, SIGNAL(textChanged(const QString&)), doc, SLOT(setFulfilled(const QString&))); connect(dueto, SIGNAL(textChanged(const QString&)), doc, SLOT(setDueTo(const QString&))); Számlatételek kezelése A számlatételek ábrázolására bevezetjük az InvoiceItem osztályt. Az osztályt a dokumentum osztállyal egy moduban definiáljuk (invoicerdoc.h). Az osztályba felvesszük a számlatétel adatait tartalmazó mezőket, a hozzájuk tartozó lekérdező függvényeket, a számítással meghatározható jellemzőket visszaadó műveleteket, valamint egy konstruktort. A számlatételek adatait is el kell tárolnunk a dokumentumban, ezért az InvoiceItem osztály elkészülte után az InvoiceDoc számla osztály adattagjai közé felveszünk egy új adattagot, a számlatételeket tartalmazó listát. A számlatétel elemei: megnevezés: _name (adatttag) mennyiségi egység: _unit (adatttag) egységár: _unitprice (adatttag) mennyiség: _quantity (adatttag) nettó ár: _netprice=unitprice*_quantity (számított adat) áfakulcs: _vatpercent (adatttag) áfa összege: _vat=_netprice*_vat/100 (számított adat) bruttó ár: _grossprice=netprice+_vat (számított adat) 4. oldal
5 Az InvoiceItem osztály Az InvoiceItem osztály definícióját is(!) és implementációját is(!) a dokumentum osztály definíciós fájljában (invoicerdoc.h) adjuk meg. Egészítsük ki az invoicerdoc.h fájlt az alábbiak szerint. Az InvoiceItem osztály definíciója és (!) implementációja class InvoiceItem public: InvoiceItem(QString n=qstring::null, QString u=qstring::null, int q=0, int up=0, int vat=0): _name(n), _unit(u), _quantity(q), _unitprice(up), _vatpercent(vat) void update(qstring n=qstring::null, QString u=qstring::null, int q=0, int up=0, int vat=0) _name=n; _unit=u; _quantity=q; _unitprice=up; _vatpercent=vat; const QString& name() return _name; const QString& unit() return _unit; int quantity() return _quantity; int unitprice() return _unitprice; int vatpercent() return _vatpercent; //Bruttó ár int allvalue() const return _quantity*_unitprice*(100+_vatpercent)/100; invoicerdoc.h A konstruktorban inicializáljuk az I n voiceitem adattagjait. V alamennyi adattagnak van alapértelmezett kezdőértéke. Az update() tagfüggvénnyel a paraméterek alapján aktualizáljuk az adatokat. A lekérdez ő mű veletek olyan egyszerű ek, hogy ezeket inline módon adjuk meg. I tt következnek a számított adatok aktuális értékét visszaadó függvények. //nettó ár int netvalue() const return _quantity*_unitprice; //áfa összege int vatvalue() const return _quantity*_unitprice*_vatpercent/100; //adattagok private: QString _name; QString _unit; int _quantity; int _unitprice; int _vatpercent; ; 5. oldal
6 A dokumentum osztály számlatétel listája (_items) Az InvoicerDoc osztály adattagjai közé felveszünk egy InvoiceItem típusú elemeket tartalmazó listát. A Qt Assistant segítségével nézze meg a QPtrList osztály tagfüggvényeit. // application specific includes #include <qptrlist.h> class InvoicerDoc : public Qobject invoicerdoc.h ; public: const QPtrList<InvoiceItem>& items() const return _items; protected: QPtrList<InvoiceItem> _items; Új számlatétel felvitele A számlatétel felvitelére készítünk egy dialógusablakot. Ehhez a szokásos módon egy.ui kiterjesztésű user interface fájlt adunk a projekthez. A fájl neve legyen invitemdia.ui, és származtassuk azt a QDialog osztályból. Új dialógusablak létrehozása A számlatétel dialógusablakát a Qt Designer segítségével készítjük el a szokásos módon. A cél az alábbi párbeszédablak létrehozása. 6. oldal
7 A dialógusablak felépítése A vezérlőelemek típusát és tulajdonságait az alábbi táblázat tartalmazza. A dialógusablak paraméterezése Vezérlő azonosító Class Properties Megjegyzés InvItemDia QDialog Caption: New Item A dialógusablakon elhelyezett elemek paraméterezése Vezérlő azonosító Class Properties Megjegyzés TextLabel* QLabel Text: Name:, Buddy: itemname TextLabel* QLabel Text: Unit:, Buddy: unit TextLabel* QLabel Text: Unit price::, Buddy: unitprice TextLabel* QLabel Text: Quantity:, Buddy: quantity TextLabel* QLabel Text: Vat %:, Buddy: vatpercent itemname unit unitprice quantity QLineEdit QLineEdit QLineEdit QLineEdit vatpercent QComboBox ** okpushbutton QPushButton Text: OK Az OkPushButton gomb clicked() signálját kössük össze az InvItemDia dialógusablak accept() slotjával. cancelpushbutton QPushButton Text: Cancel A cancelpushbutton gomb clicked() signálját kössük össze az InvItemDia dialógusablak reject() slotjával. * : A *-gal megjelölt feliratoknál nem kötelező egyedi azonosítót megadni. ** Az áfa kulcsot legördülő listából választjuk ki. A legördülő lista létrehozására a QComboBox osztályt választottuk. A lista szerkesztéséhez a vezérlőelem felett a jobb egérfülre kattintva a felkínált helyi menüből választhatja ki az Edit menüpontot. 7. oldal
8 Új menüpont elhelyezése az alkalmazásban (Items/New) Az egyes számlatételek kezeléséért felelős dialógusablak behívására bevezetünk egy új menüpontot, amit a főmenübe illesztünk be. Egészítsük ki alkalmazásunkat az Item/New menüponttal. File: New, Open, Save, SaveAs, Quit Item: New View: ToolBar, StatusBar Help: About Az új menüpont bevezetésével kapcsolatban az alábbiakat kell megtennünk: 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.) Összekapcsoljuk a tevékenységet és az őt kezelő slotot. Létrehozzuk az új menüpontot, majd ráhelyezzük az alkalmazás főablakára. Hozzárendeljük a tevékenységet a menüponhoz. Megadjuk a slot implementációját. Az itemsnew tevékenység és az azt kezelő slot definíciója class Invoicer : public QMainWindow private slots: void slotfilenew(); /* application specific slots*/ void slotitemsnew(); invoicer.h A tevékenységet implementáló slot deklarációja private: QAction *helpaboutapp; /* application specific actions */ QAction *itemsnew; A z Új tétel felvitele tevékenységet definiáló QAction deklarációja. ; Saját jegyzet 8. oldal
9 Az itemsnew tevékenység objektum létrehozása és inicializálása /** initializes all QActions of the application */ void Invoicer::initActions() filequit = new QAction(tr("Exit"), tr("e&xit"), 0, this); filequit >setstatustip(tr("quits the application")); filequit >setwhatsthis(tr("exit\n\nquits the application")); connect(filequit, SIGNAL(activated()), this, SLOT(slotFileQuit())); itemsnew = new QAction(tr("Insert new item"),tr("&new item"), 0, this); itemsnew >setstatustip(tr("insert a new item into the invoice")); itemsnew >setwhatsthis( tr("new Item\n\nEnables/Insert a new item into the invoice")); connect(itemsnew, SIGNAL(activated()), this, SLOT(slotItemsNew())); invoicer.cpp A Q Action objektum inicializálása, befűzése, összekötése. A QAction első paraméterében megadjuk az új menü szövegét, a második paraméterében a gyorsbillentyűt és az eszközgomb szöveget. A harmadik paraméter this értékével azt jelezzük, hogy a tevékenység a főablak gyereke. Beállítjuk a súgó szöveget (status tip), a What is this szöveget, majd összekötjük a tevékenységet az őt kezelő slottal (slotitemsnew()) Az itemsnew tevékenység beillesztése a menübe Létrehozzuk az itemsmenu legördülő menü példányt, majd hozzáadjuk az itemsnew tevékenységet, végül a menüt befűzzük a menüsorba. class Invoicer : public QmainWindow /* application specific slots*/ void slotitemsnew(); invoicer.h private: QPopupMenu *filemenu; QPopupMenu *itemsmenu; QPopupMenu *viewmenu; Az I tems menüpont deklarációja. /* application specific actions */ QAction *itemsnew; ; 9. oldal
10 void Invoicer::initMenuBar() // menubar entry itemsmenu itemsmenu=new QPopupMenu(); itemsnew >addto(itemsmenu); /////////////////////////////////////////////////////////////////// // MENUBAR CONFIGURATION menubar() >insertitem(tr("&file"), filemenu); menubar() >insertitem(tr("&items"), itemsmenu); menubar() >insertitem(tr("&view"), viewmenu); menubar() >insertseparator(); menubar() >insertitem(tr("&help"), helpmenu); A slotitemsnew() implementálása Az új számlatétel felvitelekor az alábbi tevékenységeket kell elvégezni: invoicer.cpp Létrehozzuk az I tem menüpontot, és beledobjuk az itemsne w tevékenységet. A z I tems menüpontot beillesztjük a menüsorba. dialógusablak létrehozása dialógusablak modális 1 megjelenítése ha a dialógust OK-val zárták: a bevitt adatok kinyerése a dialógusablakból új számlatétel (InvoiceItem) objektum hozzáadása a számlához a számlatételeket megjelenítő QListView (items) frissítése a view objektumban. #include "invitemdia.h" #include "qlineedit.h" #include "qcombobox.h" void Invoicer::slotItemsNew() statusbar() >message(tr("inserting a new invoice item...")); InvItemDia dlg(this,0,true); if (dlg.exec() == QDialog::Accepted) doc >insertitem(new InvoiceItem(dlg.itemName >text(), dlg.unit >text(), dlg.quantity >text().toint(), dlg.unitprice >text().toint(), dlg.vatpercent >currenttext().toint))); statusbar() >message (tr("item added. ")); else statusbar() >message(tr("cancelled")); invoicer.cpp Ne feledkezzen meg az include-okról!!! A z insert Item() függvényt még meg kell írni! 1 Modális megjelenítés: A párbeszédablak lesz az alkalmazás aktív ablaka mindaddig, amig be nem zárjuk azt. 10. oldal
11 A slotitemsnew() slot implementációjában létrehoztuk az InvItemDia dialógusablak egy példányát. A konstruktor első paramétere azt mondja meg, hogy a dialógusablak az Invoicer osztály gyermeke. A harmadik paraméter true értéke jelzi, hogy a dialógusablakot modálisan szeretnénk használni. Ha a felhasználó az OK gombra kattintva lépett ki a dialógusból, akkor az ott létrehozott tételt beszúrjuk a dokumentumba az insertitem() függvény segítségével. A státusz sorban megjelenik az Item added üzenet. Ha a felhasználó a Cancel gombra kattintott, akkor ezt a tényt a státuszsorban jelezzük, de ilyenkor nincs semmi tennivalónk. Új tétel beillesztése a számlába Amikor a számlatétel felbukkanó dialógusablakában megadtunk egy új tételt, és rákattintottunk az OK gombra, akkor egyrészt az új számlatétel adatait át kell adni az adatokért felelős doc-nak, másrészt a megjelenítésért felelős view-ban frissíteni kell a módosított sort. Először is a dokumentum osztályban bevezetünk egy új publikus függvényt (insertitem()), melyet majd meghívhatunk az Invoicer-ből az OK lenyomása után. (doc->insertitem()). Az insertitem() függvény egyrészt beilleszti az új számlatételt a dokumentumba, másrészt kibocsájtja az iteminserted() signalt (emit signal), jelezvén a külvilág számára, hogy ő beillesztett egy új számlatételt, azaz megváltoztak az adatai. Az InvoicerView osztályban elkészítjük a fenti signál fogadására alkalmas slotdocitemadded() slotot, és összekötjük azt az insertitem() függvényben kibocsájtott iteminserted() signállal. A slotdocitemadded() függvény feladata lesz az új számlatétel megjelenítése. Saját jegyzet 11. oldal
12 Új tétel hozzáadása a dokumentumhoz (számlához) class InvoicerDoc : public QObject Q_OBJECT public: const QPtrList<InvoiceItem>& items() const return _items; ; void insertitem(invoiceitem *i) _items.append(i); modified=true; emit iteminserted(i); signals: void documentchanged(); void iteminserted(invoiceitem *i); protected: QPtrList<InvoiceItem> _items; invoicerdoc.h A függvénydefiníciót inline módon adtuk meg. H a egy számlatételt beillesztettünk az _items listába, signált bocsájtunk ki. A signál a paraméterén keresztül átadja a számlatételre mutató pointert. Új számlatétel megjelenítése a nézet tétellistájában class InvoicerView : public InvoicerViewBase Q_OBJECT public: InvoicerView(QWidget *parent=0, InvoicerDoc* doc=0); ~InvoicerView(); protected slots: void slotdocumentchanged(); void slotdocitemadded(invoiceitem*); ; invoicerview.h Deklaráljuk a slot Doc ItemAdded() slotot, amelyre majd rákötjük az iteminserted() signalt. InvoicerView::InvoicerView(QWidget *parent, InvoicerDoc *doc) : InvoicerViewBase(parent) connect(doc, SIGNAL(documentChanged()), this, SLOT(slotDocumentChanged())); connect( doc,signal(iteminserted(invoiceitem*)), this,slot(slotdocitemadded(invoiceitem*))); invoicerview.cpp Összekötjük a dokumentum osztály iteminserted() szignálját a nézet osztály (this) slot DocItemAdded() slotjával. 12. oldal
13 #include <qlistview.h> void InvoicerView::slotDocItemAdded(InvoiceItem* i) new QListViewItem(items, i >name(), i >unit(), QString::number(i >quantity()), QString::number(i >unitprice()), QString::number(i >netvalue()), QString::number(i >vatpercent()), QString::number(i >vatvalue()), QString::number(i >allvalue()) ); invoicerview.cpp Slot implementáció A dokumentum iteminserted() signáljától kapott számlatétel adatai alapján a QListViewItem konstruktora segítségével az items listához hozzávesszük az új számlatételt. A QListViewItem típus használata miatt az InvoicerView osztályba be kell illeszteni a QListView osztály definícióját. (#include <qlistview.h>) Fordítás/Futtatás Számlatétel módosítása Számlatétel módosításakor az alábbi teendőnk van: * a kiválasztott sorhoz tartozó számlatétel meghatározása dialógusablak létrehozása * a dialógusablak feltöltése a számlatételből dialógusablak modális megjelenítése ha a dialógust OK-val zárták: a bevitt adatok kinyerése a dialógusablakból * a számlatétel (InvoiceItem) objektum módosítása a számlában a számlatételeket megjelenítő QListView (items) frissítése a view objektumban. Vegye észre, hogy a számlatétel módosítása nagyon hasonlít az új számlatétel felvitele feladathoz, ezért csak a *-gal megjelölt lépéseket kell többletként megoldani. Saját jegyzet 13. oldal
14 Számlatétel felismerése A számlatételek módosításakor a nézet osztályban (InvoicerView) megjelenített listából kiválasztott sort (számlatételt) kell módosítani. Ehhez tudnunk kell, hogy a QListView (items) kiválasztott sora a ListViewItem lista melyik elemére (_items egy eleme) vonatkozik. Egy listában szereplő elem (sor) azonosítására általában többféle megoldás is kínálkozik. Azonosíthatjuk a sort a kijelölt sor tartalma alapján, de ez több egyforma sor esetén nem egyértelmű. Meghatározhatjuk a számlatételt a kijelölt sor sorszáma alapján. Ez azért nehézkes, mert egyrészt a ListView-ban az elemek sorrendje felcserélhető, másrészt egy-egy tétel törlése sok adminisztrációt kíván. Az előzőeknél általánosabb és elegánsabb megoldást kapunk, ha a QListView osztályból származtatunk egy saját sor típust, és ezt összekötjük a neki megfelelő InvoiceItem objektummal. Esetünkben a nézet osztályban kiválasztott sor (számlatétel) tartalma alapján nem tudjuk eldönteni, hogy az az _items lista melyik elemét jeleníti meg, ezért mi a harmadik megoldást választjuk. Új sor típus bevezetése származtatással (ListViewInvoiceItem) A ListViewInvoiceItem osztály felelősége a hozzá tartozó számlatétel megjelenítése. A ListViewInvoiceItem osztályt a QListViewItem osztályból származtatjuk. Az új osztályt kibővítjük egy új adattaggal (egy InvoiceItem-re mutató pointerrel), így minden ListViewInvoiceItem típusú példány tudja magáról, hogy a doc-ban tárolt lista mely adatát reprezentálja. Az új sor típust beágyazzuk az ImvoicerView osztályba!! Saját jegyzet 14. oldal
15 A ListViewInvoiceItem beágyazott osztály definíciója és implemetációja //include files for Qt #include <qlistview.h> invoicerview.h // application specific includes #include "invoicerdoc.h" #include "invoicerviewbase.h" class InvoicerView : public InvoicerViewBase Q_OBJECT public: InvoicerView(QWidget *parent=0, InvoicerDoc* doc=0); ~InvoicerView(); //Beágyazott osztály eleje class ListViewInvoiceItem: public QListViewItem public: ListViewInvoiceItem(QListView *parent, InvoiceItem *i): QListViewItem(parent, i >name(), i >unit(), QString::number(i >quantity()), QString::number(i >unitprice()), QString::number(i >netvalue()), QString::number(i >vatpercent()), QString::number(i >vatvalue()), QString::number(i >allvalue())), _i(i) Beágyazott osztály eleje. void update() settext(0, _i >name()); settext(1, _i >unit()); settext(2, QString::number(_i >quantity())); settext(3, QString::number(_i >unitprice())); settext(4, QString::number(_i >netvalue())); settext(5, QString::number(_i >vatpercent())); settext(6, QString::number(_i >vatvalue())); settext(7, QString::number(_i >allvalue())); InvoiceItem *_i; ; //Beágyazott osztály vége Beágyazott osztály vége. protected slots: void slotdocumentchanged(); void slotdocitemadded(invoiceitem*); ; 15. oldal
16 A ListViewInvoiceItem típus bevezetése után módosítani kell a slotdocitemadded() slotot is. void InvoicerView::slotDocItemAdded(InvoiceItem* i) new ListViewInvoiceItem(items, i); invoicerview.cpp Most pedig valósítsuk meg a számlatétel módosítása, illetve törlése funkciókat. Ehhez létre kell hozni a megfelelő QAction objektumokat, be kell őket fűzni a menübe és slotokat kell definiálnunk a tevékenységek elvégzésére. Új menüpontok elhelyezése az alkalmazásban (Items/Edit; Items/Remove) Az új menüpont bevezetésének lépései: 1. az almenü mező (adattag) deklarációja (invoicer.h) 2. a számlatétel módosítása / számlatétel törlése tevékenységeket definiáló QAction mezők deklarációja (invoicer.h) 3. a tevékenységeket implementáló slotok deklarációja (invoicer.h) 4. az almenük inicializálása és befűzése a főmenübe (invoicer.cpp) 5. a QAction objektumok inicializálása és befűzése a főmenübe (invoicer.cpp) 6. a slotok implementációja (invoicer.cpp) A itemsedit/itemsremove tevékenységek deklarációja class Invoicer : public QMainWindow invoicer.h private slots: /* application specific slots*/ void slotitemsnew(); /* Edit an item in the actual invoice */ void slotitemsedit(); /* Remove an item from the actual invoice */ void slotitemsremove(); private: /* application specific actions */ QAction *itemsnew; QAction *itemsedit; QAction *itemsremove; A tevékenységeket kezel ő slotok deklarációja. A Számlatétel módosítása és a Számlatétel törlése tevékenységek deklarációja. ; 16. oldal
17 Az itemsedit és itemsremove tevékenység objektumok létrehozása és inicializálása void Invoicer::initActions() itemsnew = new QAction(tr("Insert new item"),tr("&new item"), 0, this); itemsnew >setstatustip(tr("insert a new item into the invoice")); itemsnew >setwhatsthis( tr("new Item\n\nEnables/Insert a new item into the invoice")); connect(itemsnew, SIGNAL(activated()), this, SLOT(slotItemsNew())); invoicer.cpp itemsedit = new QAction(tr("Edit Item"), tr("&edit Item"), 0, this); itemsedit >setstatustip(tr("modifies an existing invoice item")); itemsedit >setwhatsthis( tr("edit Item\n\nModifies an existing invoice item")); connect(itemsedit, SIGNAL(activated()), this, SLOT(slotItemsEdit())); itemsremove = new QAction(tr("Remove Item"), tr("&remove Item"), 0, this); itemsremove >setstatustip(tr("removes an existing invoice item")); itemsremove >setwhatsthis( tr("remove Item\n\nRemoves an existing invoice item")); connect(itemsremove, SIGNAL(activated()), this, SLOT(slotItemsRemove())); Az itemsedit és itemsremove tevékenységek beillesztése a menübe void Invoicer::initMenuBar() // menubar entry itemsmenu itemsmenu=new QPopupMenu(); itemsnew >addto(itemsmenu); itemsedit >addto(itemsmenu); itemsremove >addto(itemsmenu); invoicer.cpp Az initmenubar() műveletben a már korábban létrehozott itemsmenu popup menühöz hozzáadjuk az itemsedit/itemsremove objektumokat, majd befűzzük azokat a menüsorba. Az itemsedit slot implementációja (slotitemsedit() ) Az új számlatétel módosításakor az alábbi tevékenységeket kell elvégezni: az aktuálisan kiválasztott sorhoz tartozó InvoiceItem objektum meghatározása a felvitelnél használt dialógus feltöltése a számlatétel alapján dialógusablak modális megjelenítése ha a dialógust OK-val zárták: a változtatások elmentése a kiválasztott InvoiceItem objektumba az aktuális sor adatainak frissítése 17. oldal
18 A slotitemsedit() slot implementációjában használhatjuk a felvitelhez létrehozott InvItemDia dialógusablakot. Ha azt OK-val zárták (QDialog::Accepted()), akkor módosítjuk a tételt a dokumentumban és a view objektumban. void Invoicer::slotItemsEdit() statusbar() >message(tr("modifying current item...")); if(view >items >currentitem()) InvItemDia dlg(this,0,true); InvoiceItem *ii = (dynamic_cast<invoicerview::listviewinvoiceitem *> (view >items >currentitem())) >_i; dlg.itemname >settext(ii >name()); dlg.unit >settext(ii >unit()); dlg.quantity >settext(qstring::number(ii >quantity())); dlg.unitprice >settext(qstring::number(ii >unitprice())); int cnt=dlg.vatpercent >count(); for(int i=0; i<cnt; ++i) if (dlg.vatpercent >text(i).toint()==ii >vatpercent()) dlg.vatpercent >setcurrentitem(i); break; if (dlg.exec() == QDialog::Accepted) ii >update( dlg.itemname >text(), dlg.unit >text(), dlg.quantity >text().toint(), dlg.unitprice >text().toint(), dlg.vatpercent >currenttext().toint()); (dynamic_cast<invoicerview::listviewinvoiceitem *> (view >items >currentitem())) >update(); doc >setmodified(); statusbar() >message(tr("item updated."), 2000); else statusbar() >message(tr("modification aborted."), 2000); statusbar() >message(tr("ready")); invoicer.cpp A set Modified() függvényt még meg kell adni a dokumentum osztályban. Ha a nézet osztály items listájában van kiválasztott elem, akkor létrehozunk egy modális, InvItemDia típusú párbeszédablakot, amelyet kitöltünk a kiválasztott listaelem adataival. Az adatok kitöltéséhez felhasználjuk az általunk létrehozott ListViewInvoiceItem típusban tárolt mutatót. Az ÁFA kulcs QComboBox-át úgy állítjuk be, hogy az az aktuális listaelemhez tartozó értéket mutassa. Ha az OK gombbal tértünk vissza, akkor aktualizáljuk a dokumentumot ( ii->update ()), majd a nézetben is frissítjük a módosított számlatételt. A view->items->currentitem() visszaadja az aktuális tételre mutató pointert, melynek típusa QListViewItem*. Ahhoz, hogy a ListViewInvoiceItem osztály update() metódusa hajtódjon végre el kell végeznünk egy dianamikus típuskonverziót. 18. oldal
19 Az itemsremove slot implementációja (slotitemsremove()) Egy számlatétel törlésekor az alábbi tevékenységeket kell elvégezni: az aktuálisan kiválasztott sorhoz tartozó InvoiceItem objektum meghatározása ha a dialógust OK-val zárták: a tétel törlése a dokumentumból a tétel törlése a view-ból void Invoicer::slotItemsRemove() statusbar() >message(tr("removing current item...")); if (view >items >currentitem()) InvoiceItem *ii = (dynamic_cast <InvoicerView::ListViewInvoiceItem *> (view >items >currentitem())) >_i; doc >removeitem(ii); delete view >items >currentitem(); statusbar() >message(tr("item removed."), 2000); statusbar() >message(tr("ready")); invoicer.cpp A removeitem() függvényt még meg kell adni a dokumentum osztályban. Új műveletek a dokumentum osztályban (setmodified(), removeitem()) A program hibátlan működéséhez még meg kell adnunk a dokumentum osztály hiányzó két metódusát. class InvoicerDoc : public QObject public: bool ismodified() const; void setmodified(bool val=true) modified = val; void removeitem(invoiceitem *i) _items.removeref(i); modified=true; ; invoicer.cpp Fordítás/Futtatás Ami még hátra van... Természetesen (sajnos ) ezzel még nem készült el a teljes alkalmazás. Hátra van még a számla mentése fájlba, a számla visszaolvasása fájlból, valamint az input adatok ellenőrzése. Ezeket a feladatokat a C++/Qt alapú SDI alkalmazás készítése III. munkafüzetben oldjuk meg. 19. oldal
20 Projekt összeállítása Qt parancsokkal 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: invoicer.h, invoicer.cpp, invoicerdoc.h,invoicerdoc.cpp, invoicerview.h,invoicerview.cpp, main.cpp, invitemdia.ui, 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 platform független projekt fájlt (invoicer.pro): qmake -project (Ha a Qt Designerrel hozta létre a projektet és úgy illesztette be a fájlokat, akkor ezt a lépést kihagyhatja.) 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.04a) Tue Apr 13 12:48: ###################################################################### TEMPLATE = app INCLUDEPATH +=. # Input HEADERS += invoicer.h invoicerdoc.h invoicerview.h INTERFACES += invitemdia.ui invoicerviewbase.ui SOURCES += invoicer.cpp 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 munkafüzet programjai letölthetők a people.inf.elte.hu/nacsa/eaf3/projects/2005/invoicer2 címről. 20. oldal
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é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é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észletesebbenElemi alkalmazások fejlesztése III. SDI alkalmazás készítése Qt-ben I.
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
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észletesebbenElemi 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észletesebbenElemi 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 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észletesebbenElemi 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é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. 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észletesebbenAlkalmazá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észletesebbenAlkalmazá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é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é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é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észletesebbenAlkalmazá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é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é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é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észletesebbenA 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észletesebbenEsemé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é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észletesebbenAdabá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é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észletesebbenElemi 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észletesebbenAccess 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é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é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é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é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é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észletesebbenProgramozá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é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észletesebbenHVK 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észletesebbenA 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észletesebbenJava 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észletesebbenJava 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észletesebbenEntity Framework alapú adatbáziselérés
Entity Framework alapú adatbáziselérés Dr. Johanyák Zsolt Csaba http://johanyak.hu A gyakorlat célja Model-first megközelítéssel Entity-Framework modell létrehozása, majd ebből adatbázis generálása LocalDB-ben.
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észletesebbenSorosí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é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észletesebbenDiá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észletesebbenSwing 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észletesebbenA 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é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észletesebbenAdatbá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észletesebbenHozzunk 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észletesebbenAz importálás folyamata Felhasználói dokumentáció verzió 2.1.
Az importálás folyamata Felhasználói dokumentáció verzió 2.1. Budapest, 2008. Változáskezelés Verzió Dátum Változás Pont Cím Oldal 2.1. 2008.01.17. A teljes dokumentáció megváltozott Kiadás: 2008.01.17.
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é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észletesebbenVizuá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észletesebbenTortoise SVN használata. Képes útmutató
Tortoise SVN használata Képes útmutató 0. lépés Checkout könyvtár létrehozása Hozzunk létre egy könyvtárat, ahova letöltjük első alkalommal a Repository tartalmát és ahol később dolgozni fogunk! 1. Checkout
RészletesebbenIntegráció LadyBirddel
Integráció LadyBirddel 1 A ShopRenter és a Ladybird integrációjához beállításokat kell eszközölnünk mind a ShopRenter, mind a LadyBird felületén. Elsőként a LadyBirdben kell elvégeznünk teendőinket, mert
RészletesebbenAdatbá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észletesebbenFelhasználói útmutató (Adott programverzióhoz érvényes)
CalcSystem Számlarendszer Felhasználói útmutató (Adott programverzióhoz érvényes) M City Kft. Miskolc Tel/fax: 46/ 560-268 Mobil: 30/9458-718 Felhasználói útmutató Menürendszer A mellékelt főmenü szerkezete
RészletesebbenFolyamatos teljesítésű számlák tömeges generálása időszakonként, egyedi tételek kezelésének lehetőségével
Tömeges számlázás Folyamatos teljesítésű számlák tömeges generálása időszakonként, egyedi tételek kezelésének lehetőségével Tömeges számlázáshoz tartozó alap beállítások Tömeges számlázási adatok megadása
Részletesebben3. Beadandó feladat dokumentáció
3. Beadandó feladat dokumentáció Készítette: Giachetta Roberto E-mail: groberto@inf.elte.hu Feladat: Készítsünk adatbázis alapú, grafikus felületű alkalmazást egy apartmanokkal foglalkozó utazási ügynökség
RészletesebbenPénzintézetek jelentése a pénzforgalmi jelzőszám változásáról
Pénzintézetek jelentése a pénzforgalmi jelzőszám változásáról Felhasználói Segédlet MICROSEC Kft. 1022 Budapest, Marczibányi tér 9. telefon: (1)438-6310 2002. május 4. Tartalom Jelentés készítése...3 Új
RészletesebbenJava 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észletesebbenAdatbázis-kezelés ActiveX vezérl kkel 2.rész
Adatbázis-kezelés ActiveX vezérl kkel 2.rész Készítette: Szabóné Nacsa Rozália 2004. november Feladat Figyelmeztetés, Figyelmeztetés, ha ha betelt betelt a a csoport. csoport. Csoport Csoport kiválasztása
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é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észletesebben1. 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észletesebbenObjektumorientá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 8. ELŐADÁS Üzenetablakok, dialógusablakok MDI alkalmazások 2 Üzenetablakok Windows-os alkalmazásokban nagyon gyakran használt
RészletesebbenBelépés a GroupWise levelező rendszerbe az Internet felől
1 Belépés a GroupWise levelező rendszerbe az Internet felől A GroupWise levelező szolgáltatás web felelületről, az Internet felől az Egyetem honlapjáról is elérhető, az alábbi linken: www.uni-nke.hu WEBMAIL-NKE
RészletesebbenContractTray program Leírás
ContractTray program Leírás Budapest 2015 Bevezetés Egy-egy szerződéshez tartozó határidő elmulasztásának komoly gazdasági következménye lehet. Éppen ezért a Szerződés kezelő program főmenü ablakában a
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észletesebbenDKÜ ZRT. A Portál rendszer felületének általános bemutatása. Felhasználói útmutató. Támogatott böngészők. Felületek felépítése. Információs kártyák
A Portál rendszer felületének általános bemutatása Felhasználói útmutató Támogatott böngészők Internet Explorer 9+ Firefox (legújabb verzió) Chrome (legújabb verzió) Felületek felépítése Információs kártyák
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észletesebbenÜgyfélforgalom számlálás modul
Ügyfélforgalom számlálás modul 1 1. Bevezetés... 3 2. BEÁLLÍTÁSOK... 4 2.1. Új Kérdőív létrehozása... 4 o Kérdéstípusok és a hozzájuk tartozó lehetséges válaszok hozzárendelése... 4 Új Kérdéstípus felvitele...
RészletesebbenÓrarendkészítő szoftver
SchoolTime Órarendkészítő szoftver 2.0 verzió Tartalomjegyzék: 1., Belépés a programba...3 2., Órarend főtábla...3 3., Tanátok...4 3.1., Új tanár felvitele, módosítása...4 3.2., Tanár törlése...4 3.3.,
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észletesebbenAtlon 2 Utasbiztosítási Rendszer
Atlon 2 Utasbiztosítási Rendszer (újdonságok) Megújult az Atlon Utasbiztosítási rendszer felülete. Ez a dokumentum röviden összefoglalja a változásokat és újdonságokat. Reméljük, hogy a fejlesztés nyomán
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észletesebbenOOP: 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észletesebbenDebitTray program Leírás
DebitTray program Leírás Budapest 2015 Bevezetés Egy-egy kintlévőséghez tartozó határidő elmulasztásának komoly következménye lehet. Éppen ezért a Kintlévőség kezelő program főmenü ablakában a program
RészletesebbenWeb-technológia PHP-vel
Web-technológia PHP-vel A PHP programnyelv 2, futtatókörnyezet beálĺıtások Erős Bence February 26, 2013 Erős Bence () Web-technológia PHP-vel February 26, 2013 1 / 19 Szuperglobális változók $ GET : request
RészletesebbenAdatbázis Rendszerek II. 5. PLSQL Csomagok 16/1B IT MAN
Adatbázis Rendszerek II. 5. PLSQL Csomagok 16/1B IT MAN B IT v: 2016.03.03 MAN Csomagok A DBMS csomagok a PL/SQL alkalmazások fejlesztését segítik, bennük tároljuk a létrehozott programok kódjait. A specifikációs
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észletesebbenAdatbá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észletesebbenElemi 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észletesebbenVidux DVR and CMS Release Notes update from 4.2.0 to 4.2.1. Verziókövetési jegyzet
Vidux DVR and CMS Release Notes update from 4.2.0 to 4.2.1 hu Verziókövetési jegyzet 2009. 05. v.4.2.1 Verziókövetés 2. oldal, összesen: 12 Vidux Technologies TARTALOMJEGYZÉK VÁLTOZÁSOK A VIDUX DVR FELÜLETEN
RészletesebbenObjektumorientá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észletesebbenBME 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észletesebbenDokumentum létrehozása/módosítása a portálon:
Dokumentum létrehozása/módosítása a portálon: 1. Belépés a szerkesztőfelületre A következő webcímre belépve - http://www.zalaegerszeg.hu/licoms/login - megjelenik a szerkesztőfelület beléptető ablaka,
RészletesebbenSzámítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás
Számítástechnika II. BMEKOKAA153 5. Előadás Dr. Bécsi Tamás Kivételkezelés try Azon utasítások kerülnek ide, melyek hibát okozhatnak, kivételkezelést igényelnek catch( típus [név]) Adott kivételtípus esetén
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észletesebbenAdatintegritás ellenőrzés Felhasználói dokumentáció verzió 2.0 Budapest, 2008.
Adatintegritás ellenőrzés Felhasználói dokumentáció verzió 2.0 Budapest, 2008. Változáskezelés Verzió Dátum Változás Pont Cím Oldal Kiadás: 2008.10.30. Verzió: 2.0. Oldalszám: 2 / 11 Tartalomjegyzék 1.
RészletesebbenElemi 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észletesebbenFelhasználói segédlet a Scopus adatbázis használatához
Felhasználói segédlet a Scopus adatbázis használatához Az adatbázis elérése, regisztrálás, belépés Az adatbázis címe: http://www.scopus.com Az adatbázis csak regisztrált, jogosultsággal rendelkező intézmények,
RészletesebbenMobil informatika gyakorlat. 2. óra: NFC a gyakorlatban
Mobil informatika gyakorlat 2. óra: NFC a gyakorlatban Mi az NFC? Near Field Communication Rövid hatótávolságú rádiófrekvenciás technológia (tipikusan 5-10 cm) 13,56 MHz frekvencia Az ISO/IEC 14443 szabvány
RészletesebbenDuál Reklám weboldal Adminisztrátor kézikönyv
Duál Reklám weboldal Adminisztrátor kézikönyv Dokumentum Verzió: 1.0 Készítette: SysWork Szoftverház Kft. 1. oldal Felület elérése Az adminisztrációs felület belépés után érhető el. Belépés után automatikusan
RészletesebbenE-Freight beállítási segédlet
E-Freight beállítási segédlet Az E-Freight rendszer működéséhez szükséges programok és beállítások v08 A legújabb verzióért kérjük, olvassa be az alábbi kódot: 1. Támogatott böngészők Az E-Freight az Internet
RészletesebbenSTL gyakorlat C++ Izsó Tamás május 9. Izsó Tamás STL gyakorlat/ 1
STL gyakorlat C++ Izsó Tamás 2016. május 9. Izsó Tamás STL gyakorlat/ 1 Komponensek kapcsolata Deklarálja az alábbi osztálydiagramon szereplő osztályok közül az A, AA és AB osztályokat! A konstruktorokat
RészletesebbenOktatás. WiFi hálózati kapcsolat beállítása Windows XP és Windows 7-es számítógépeken. SZTE Egyetemi Számítóközpont
Oktatás WiFi hálózati kapcsolat beállítása Windows XP és Windows 7-es számítógépeken SZTE Egyetemi Számítóközpont WLAN kapcsolat beállítása 1 Tartalom Windows XP... 2 Tanúsítvány telepítése... 2 WPA2 védett
RészletesebbenPAS számlázó szoftver Használati útmutató
PAS számlázó szoftver Használati útmutató 1 Bevezetés 1.1.1 A PAS számlázó szoftver (a továbbiakban számlázó ) a magyar jogszabályoknak megfelelő számla kibocsátására alkalmas, interneten keresztül használható
RészletesebbenGLS címke kezelő bővítmény GLS online-hoz
GLS címke kezelő bővítmény GLS online-hoz A bővítmény csak Opeancart 2.2 és 2.3 verziókhoz elérhető, csak magyar nyelven! Általános ismertető: A GLS Online a http://online.gls-hungary.com weboldalon elérhető
RészletesebbenA CAPICOM ActiveX komponens telepítésének és használatának leírása Windows 7 operációs rendszer és Internet Explorer 9 verziójú böngésző esetén
A CAPICOM ActiveX komponens telepítésének és használatának leírása Windows 7 operációs rendszer és Internet Explorer 9 verziójú böngésző esetén Tartalomjegyzék 1. Az Internet Explorer 9 megfelelősségének
Részletesebben