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

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

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

Átírás

1 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 Az alkalmazás főprogramja...3 Az alkalmazás projekt fájlja...4 Sok gombos vezérlő létrehozása (buttons1)...4 ButtonGroup osztály...5 Az alkalmazás főprogramja...7 Az alkalmazás projekt fájlja...7 Eseménykezelés futási időben létrehozott vezérlőknél (buttons2)...8 ButtonGroup osztály (kiegészítés)...8 Az alkalmazás főprogramja...9 Az alkalmazás projekt fájlja...9 Saját vezérlő, saját szignál (buttons3)...10 ButtonGroup osztály (kiegészítés)...11 MainForm osztály (kiegészítés)...13 Az alkalmazás főprogramja...14 Az alkalmazás projekt leíró fájlja...15 Gombcsoport felhasználói átméretezése (buttons4)...15 ConfigDialog osztály...16 MainForm osztály (kiegészítés)...17 Az alkalmazás főprogramja...18 Az alkalmazás projekt fájlja...18 Többnyelvűség biztosítása (Qt Linguist)...18 A munkafüzet programjai letölthetők a people.inf.elte.hu/nacsa/qt4/eaf3/projects/ címről. A munkafüzetben bemutatott programok készítésekor a Qt verziót használtam. Készítette: Szabóné Nacsa Rozália nacsa@inf.elte.hu honlap: people.inf.elte.hu/nacsa Budapest, szeptember Tervezőeszközök, fejlesztőeszközök használata Qt alapú alkalmazásoknál Saját vezérlő használata tervezőben (worldclocks) Készítsünk egy olyan programot, amely mutatja a helyi időt a világ különböző pontjaira. 1. oldal

2 A korábban elkészített DigitalClock osztályt kiegészítjük egy új adattaggal (mtimezone), amely jelzi az adott DigitalClock példány időeltolódását a Greenwich Mean Time (GMT) időhöz képest, valamint az adattagot beállító függvénnyel (settimezone()). DigitalClock osztály (módosítás) worldclocks projekt: digitalclock.h (kiegészítés) class DigitalClock : public QLCDNumber Q_OBJECT public: DigitalClock(QWidget *parent = 0); void settimezone(int time) mtimezone = time; private slots: void showtime(); private: int mtimezone; ; A DigitalClock osztállyal definiált vezérlő használata Qt Creator ban ( Promote ) 1. Indítsa el a Qt Creatort 2. File/New/ 3. A felbukkanó NewForm ablakban válassza ki a Widget sablont 4. Create 5. Form kijelölése Property Editor objecname: MyForm 6. A QLCDNumber vezérlőt húzzá rá az ablakra. 7. Jelölje ki a vezérlőt, majd jobb kattintással hívja be a helyi menüt és válassza ki a Promote to Custom Widget menüpontot. 8. Adja meg a DigitalClock nevet. (Ezzel a technikával csak az ősosztály tulajdonságait tudja a Property ablakban beállítani. A későbbiekben majd megtanulunk egy olyan technikát is, ahol már a saját vezérlőnkre bevezetett tulajdonságokat is állítani lehet a Property ablakban. ) 9. Az előző pont alapján helyezze el a DigitalClock elemeket az ablakra. Típus Név Beállítások DigitalClock lcdbudapest Promote: QLCDNumber 2. oldal

3 Típus Név Beállítások DigitalClock lcdtokio Promote: QLCDNumber DigitalClock lcdlondon Promote: QLCDNumber DigitalClock lcdmoscow Promote: QLCDNumber DigitalClock lcdalaska Promote: QLCDNumber DigitalClock lcdnewzealand Promote: QLCDNumber 10. A Layout alkalmazásával rendezze el az ablakon az elemeket. 11. Mentse el a felületet myform.ui néven a display alkönyvtárba. MyFormosztály worldclocks projekt: myform.h #include "ui_myform.h" class MyForm : public QWidget, private Ui_MyForm Q_OBJECT public: MyForm(QWidget *parent = 0); ; worldclocks projekt: myform.cpp #include "myform.h" MyForm::MyForm(QWidget *parent) : QWidget(parent) setupui(this); lcdlondon >settimezone( 1); lcdtokio >settimezone(8); lcdmoscow >settimezone(2); lcdalaska >settimezone( 10); lcdnewzealand >settimezone(11); Az alkalmazás főprogramja worldclocks projekt: main.cpp #include <QApplication> 3. oldal

4 #include "myform.h" int main (int argc, char *argv[]) QApplication app(argc,argv); MyForm *form = new MyForm; form >show(); return app.exec(); Az alkalmazás projektfájlja digitalclock projekt: digitalclock.pro TEMPLATE = app TARGET = DEPENDPATH +=. INCLUDEPATH +=. # Input HEADERS += digitalclock.h myform.h FORMS += myform.ui SOURCES += digitalclock.cpp main.cpp myform.cpp Fordítsa le, majd futtassa a programot A program letölthet ő a people.inf.elte.hu/nacsa/qt4/eaf3/project/worldclocks címről. A worldclock példában az egyes városokhoz tartozó órát külön külön névvel láttuk el és az időzóna beállítása is egyedileg történt. Felmerül a kérdés, ha sok azonos vezérlővel dolgozunk nem lehetne e kényelmesebben/általánosabban kezelni azokat. A következő feladatban egy ilyen esetre adunk megoldást. Sok gombos vezérlő létrehozása (buttons1) Feladat: Készítsünk egy sok gombos vezérlőt úgy, hogy a gombok száma tervezéskor még nem ismert. (Sok gombos vezérlő futási időben történő elkészítése). Projekt neve legye: buttons1. 4. oldal

5 A projekt összeállításához a QtCreatort használjuk. A kész projekt a következő fájlokból áll: buttons1.pro, main.cpp, buttongroup.h, buttongroup.cpp 1. Indítsa el a Qt Creatort 2. Hozzon létre egy új, Qt4 GUI Application projektet. A projekt neve: buttons1 Class name: ButtonGroup, Base class: QWidget, Files: buttongroup.h, buttongroup.cpp, buttongroup.ui, main.cpp 3. A generált projektből törölje ki a buttongroup.h, buttongroup.cpp, buttongroup.ui fájlokat 4. Hozzuk létre a saját ButtonGroup osztályt. File/new/C++ Class Class name: ButtonGroup; Base class: Qwidget 5. A buttongroup.h, buttongroup.cpp fájl kódjait egészítsük ki az alábbiakban megadott kódok alapján. 6. Fordítás, futtatás ButtonGrouposztály buttons1 projekt: buttongroup.h #include <QWidget> #include <QList> class QPushButton; class QGridLayout; typedef QList<QPushButton*> ButtonList; //Gombok listájának típusa class ButtonGroup : public QWidget public: ButtonGroup(QWidget *parent = 0); private: void insertbuttons(int row, int col ); private: int mnumrows; int mnumcols; ButtonList buttonlist; //Gombok listája QGridLayout *buttonlayout; ; A gombokra mutató pintereket egy listában helyezzük el. Az osztály adatreprezentációjában azt is tároljuk, hogy ez a gombcsoport hány sorból és hány oszlopból áll. buttons1 projekt: buttongroup.cpp #include <QtGui/QGridLayout> #include <QtGui/QPushButton> #include <QtGui/QWidget> #include <QList> 5. oldal

6 #include "buttongroup.h" static const int NumRows=3; static const int NumCols=5; ButtonGroup::ButtonGroup(QWidget * parent):qwidget(parent),mnumrows(0),mnumcols(0) setwindowtitle("buttons1 projekt"); buttonlayout = new QGridLayout; setlayout(buttonlayout); insertbuttons(numrows,numcols); Beállítjuk az alkalmazás ablak fejléc címét. A gombok elhelyezkedésének kezelésére létrehozunk ag rácsos elrendezőt (QgridLayout) és jelezzük, hogy ezen osztály (űrlap) vezérlő elemeinek elrendezéséért ez az rácsos elrendező felel. void ButtonGroup::insertButtons(int row, int col ) mnumrows = row; mnumcols = col; QPushButton *button; for (int i = 0; i < row; i++) for (int j = 0; j< col; j++) button = new QPushButton( QString::number(i*col+j) + ". gomb",this ); //No destructor!!! button >setobjectname(qstring::number(i*col+j)); button >setsizepolicy( QSizePolicy( (QSizePolicy::Expanding),(QSizePolicy::Expanding))); buttonlayout >addwidget(button,i,j); //A gombokat regisztráljaz elrendezőben button >show(); buttonlist.append(button); //A gombot hozzávesszük a gombok listájához Beállítjuk az osztály sor és oszlop adattagjait. A new operátorral dinamikusan létrehozunk egy nyomógombot. Beállítjuk a nyomógomb tulajdonságait, majd megjelenítjük azt a felületen (show()). A gombra egy ideiglenes változó mutat (button), ezért mielőtt létrehoznánk a következő gombot ezt elhelyezzük a buttonlist adattagban. A szabad tárhelyen lefoglalt gombokat nem kell explicit módon felszabadítani, mert a MyForm megszűnésével annak gyerekei (ButtonGroup), a ButtonGroup megszűnésével annak gyerekei (gombok) törlődnek a szabad tárhelyről. Természetesen a szabad tárhelyen new operátorral elhelyezett, szülővel nem rendelkező, önálló objektumok felszabadításáról továbbra is nekünk kell gondoskodni. (destruktor). 6. oldal

7 Az alkalmazás főprogramja buttons1 projekt: main.cpp #include <QtGui/QApplication> #include "buttongroup.h" int main(int argc, char *argv[]) QApplication a(argc, argv); ButtonGroup w; w.show(); return a.exec(); Az alkalmazás projektfájlja buttons1 projekt: buttons1.pro TARGET = buttons1 TEMPLATE = app SOURCES += main.cpp \ buttongroup.cpp HEADERS += buttongroup.h FORMS += A program letölthet ő a people.inf.elte.hu/nacsa/qt4/eaf3/project/buttons1 címről. 7. oldal

8 Eseménykezelés futási időben létrehozott vezérlőknél (buttons2) Feladat: Az előzőekben létrehozott sok gombos vezérlő valamely gombjára kettintva egy üzenet ablakban jelezzük, hogy a gomb hányadik sorban és hányadik oszlopban található. Projekt neve: buttons2. Kiinduló projekt: buttons1. Kattintásra megjelenik, hová kattintottunk. Egészítsük ki a ButtonGroup osztályt az alábbiak szerint. ButtonGrouposztály (kiegészítés) buttons2 projekt: buttongroup.h... class ButtonGroup : public QWidget Q_OBJECT // FONTOS!!!!!... private slots: void on_button_clicked();... ; A Qt grafikus osztályaiban lehetőség van saját szignálok (üzenetek) és slotok (üzenet kezeleők) megadására. Definiáljuk az on_button_clicked() eseménykezelő függvényt. Ha az osztály tartalmaz saját szignálokat vagy szlotokat, akkor a Q_OBJECT makrót feltétlenül meg kell adni. Ennek hatására kerül be az a kód a programunkba, amely futási időben kezelni tidja ezeket a különleges függvényeket. Ha elmulasztjuk ezt a makrót akkor bár megadtuk a függvényt a fordító azt jelzi, hogy ez a függvény nem definiált. buttons2 projekt: buttongroup.cpp #include <QMessageBox> void ButtonGroup::insertButtons(int row, int col ) 8. oldal

9 mnumrows = row; mnumcols = col; QPushButton *button; for (int i = 0; i < row; i++) for (int j = 0; j< col; j++) button = new QPushButton( QString::number(i*col+j) + ". gomb",this ); //No destructor!!!... connect(button, SIGNAL(clicked()), this, SLOT(on_button_clicked())); A QObject osztály connect() függvényében kötjük össze az eseményt (SIGNAL) és az arra reagáló eseménykezelő föggvényt (SLOT). void ButtonGroup::on_button_clicked() int i = ((QPushButton*) sender()) >objectname().toint(); int row = i/mnumcols; int col = i%mnumcols; QMessageBox::information(this, trutf8("kattintás:"), QString("sor: %1, oszlop: %2 ").arg(row+1).arg(col+1)); Ez a függvény akkor kapja meg a vezérlést, amikor egy gombra rákattintottunk. A sender() függvény visszatérési értéke egy QObject típusú, az üzenetküldőre (esemény forrásobjektuma) mutató pointer. Tudjuk azt, hogy ez az Object jelen esetben egy gomb, így típuskényszerítéssel lekérdezhetjük a gomb tulajdonságait. A gombot azonosító értéket az objektum neve tartalmazza. A QMessageBox a Qt előregyártott osztálya. Ne feledkezzen meg ezt beilleszteni az alkalmazásba (#include <QMessageBox>). Érdekesség, hogy Qt4 ben nem a header fájlt kell megadni, hanem a használni kívánt osztály nevét. Az alkalmazás főprogramja buttons2 projekt: main.cpp Lásd buttons1 projekt. Az alkalmazás projektfájlja buttons2 projekt: buttons1.pro Lásd buttons1 projekt. Fordítsa és futtassa a programot. A program letölthet ő a people.inf.elte.hu/nacsa/qt4/eaf3/project/buttons2 címről. 9. oldal

10 Saját vezérlő, saját szignál (buttons3) Feladat: Helyezzük el az előzőekben létrehozott sok gombos vezérlőt egy űrlapra. Legyen a sok gombos vezérlőnek egy saját üzenete, amellyel átadja, hogy a gombjai közül mely sorban és oszlopban helyezkedik el az a gomb, amelyre rákattintottak. Kattintásra az űrlapon frissüljön a sor és oszlop érték. A program futását a Vége gombra kattintva fejezzük be. Projekt neve: buttons3. Kiinduló projekt: buttons2. A feladatot a QtCreatorral oldjuk meg. 1. Indítsa el a QtCreatort, majd töltse be az előző projektet. 2. Hozzon létre egy űrlapot: File/new/Qt Designer Form Class OK Widget Class name: MainForm More Embedding of the UI class: Multiple inheritance Next/Finish 3. Válassza ki a mainform.ui felület definiáló fájlt 4. Készítse el a grafikus felületet! 10. oldal

11 Típus Név Beállítások QLcdNumber lcdrow QLcdNumber lcdcol ButtonGroup buttongroup Promote: ButtonGroup QPushButton exitbutton Text: Vége QWidget MainForm Text: buttons3 projekt QLabel label1 Text: Sor: QLabel label2 Text: Oszlop: Egészítse ki a projekt fájljait az alábbiak szerint! ButtonGrouposztály (kiegészítés) buttons3 projekt: buttongroup.h class ButtonGroup : public QWidget Q_OBJECT public: ButtonGroup(QWidget *parent = 0); public: void newbuttongroup(int row, int col); private: 11. oldal

12 void insertbuttons(int row, int col ); void removebuttons(); private: int mnumrows; int mnumcols; ButtonList buttonlist; QGridLayout *buttonlayout; private slots: void on_button_clicked(); signals: void buttongroup_clicked(int row, int col); ; A gombcsoport vezérlőt már a tervzővel is feltehetjük az űrlapra, de ez még gombokat nem tartalmaz, hiszen azok szána futási időben derül ki. A gombok futáskori megadására bevezetjük a newbuttongroup(int row, int col) publikus függvényt. A függvény hívásakor adjuk meg a gombok számát. Ha többször egymás után meghívnánk ezt a függvényt, akkor a gombok elszaporodnának. Erre két megoldás is kínálkozik. Az egyik megoldás az lenne, hogy erre az osztályra alkalmazzuk a singleton pattern tervezési mintát, azaz, ha a lista (buttonlist) nem üres, akkor a newbuttongroup(int row, int col) ismételt meghívásakor nem csinálnánk semmit. A másik megoldás (mi ezt választotttuk), hogy ha esetleg már voltak gombok a gombcsoportban, akkor azokat onnan kivesszük. (newbuttongroup(int row, int col)). A ButtonGroup osztályt üzenetet (signal) is küld a külvilág felé, amikor rákattintanak valamely gombjára. Az űrlap más objektumai dönthetnek úgy, hogy rákapcsolódnak erre az üzenetre és használják az üzenettel együtt érkező adatot. buttons3 projekt: buttongroup.cpp Az üzenet küldés az emit kiadásával történik, melyben megadjuk a küldendő üzenetet és annak paramétereit. void ButtonGroup::on_button_clicked() int i = ((QPushButton*) sender()) >objectname().toint(); int row = i/mnumcols; int col = i%mnumcols; //QMessageBox::information(this, trutf8("kattintás:"), QString("sor: %1, oszlop: %2 ").arg(row+1).arg(col+1)); emit buttongroup_clicked(row,col); Új gombcsoport létrehozásakor a korábbi gombokat le kell szedni. Ezt azzal érjük el, hogy a lista elemein haladva rendre töröljük (delet) azokat. A QList::takeFirst() metódusa visszaadja a lista első elemére mutató 12. oldal

13 pointert, melyre kiadjuk a delete parancsot. Ezt mindaddig végezzük, amíg van elem a listában. void ButtonGroup::newButtonGroup(int row, int col) removebuttons(); insertbuttons(row, col); void ButtonGroup::removeButtons( ) while (!buttonlist.isempty()) delete buttonlist.takefirst(); MainFormosztály (kiegészítés) buttons3 projekt: mainform.h A tervezővel elkészített felületet ki kell egészíteni az alkalmazás speciális szolgáltatásaival. Két eseményt szeretnénk kezelni. Az egyik, amikor a felhasználó a Vége gombra kattint, a másik, ha a gombcsoport valamely gombjára. #include "ui_mainform.h" class MainForm : public QWidget, private Ui::MainForm Q_OBJECT Q_DISABLE_COPY(MainForm) public: explicit MainForm(QWidget *parent = 0); private slots: void on_exitbutton_clicked(); void my_on_buttongroup_clicked(int row, int col); ; buttons3 projekt: mainform.cpp #include "mainform.h" static const int NumRows=5; static const int NumCols=5; MainForm::MainForm(QWidget *parent) : QWidget(parent) setupui(this); buttongroup >newbuttongroup(numrows,numcols); connect(buttongroup, SIGNAL(buttonGroup_clicked(int,int)), this, SLOT(my_on_buttonGroup_clicked(int,int))); 13. oldal

14 Ha betartjuk a slotok elnevezésére vonatkozó névkonvenciókat, akkor a tervezőben megadott vezérlők szignálja a névkonvenciónak megfelelő slottal automatikusan össze van kapcsolva, így a connect(exitbutton, SIGNAL(clicked(int,int)), this, SLOT(on_exitButton_clicked(int,int))); parancsot nem kell megadnunk. A gombcsoport esetében más a helyzet. Ott a gomb csoport saját szignálját össze kell kötni az őt kezelő szlottal. connect(buttongroup, SIGNAL(buttonGroup_clicked(int,int)), this, SLOT(my_on_buttonGroup_clicked(int,int))); Ha élni akarunk az automatikus összekapcsolással, akkor arra is ügyelnünk kell, hogy az eseménykezelőnek ne adjunk olyan nevet, amely ütközhet az automatikus névvel. ( my_on_buttongroup_clicked()). Ez az eseménykezelő akkor kapja meg a vezérlést, amikor az ExitButton gombra kattintunk. A függvény az alkalmazás példányunkra mutató statikus (osztály szintű) qapp változó quit() metódusával zárja be az alkalmazást. A Qt érdekessége, hogy ez a mutató ténylegesen az alkalmazásunk példányára mutat, így ezen keresztül az alkalmazás számos tulajdonságát megszerezhetjük. void MainForm::on_exitButton_clicked() qapp >quit(); Ha a gombcsoport egy gombjára kattintunk, akkor az űrlap osztályban frissíteni kell megjelenített a sor és oszlop értékeket. Tekintettel arra, hogy az üzenettel együtt érkezik ez a két érték, így a függvényben az egyetlen feladat a paraméterül kapott két érték megjelenítése. void MainForm::my_on_buttonGroup_clicked(int row, int col) lcdrow >display(row+1); lcdcol >display(col+1); Az alkalmazás főprogramja buttons 3 projekt: main.cpp #include <QtGui/QApplication> #include "mainform.h" int main(int argc, char *argv[]) QApplication a(argc, argv); MainForm w; w.show(); return a.exec(); 14. oldal

15 Az alkalmazás projektleíró fájlja buttons3 projekt: buttons3.pro TARGET = buttons3 TEMPLATE = app SOURCES += main.cpp \ buttongroup.cpp \ mainform.cpp HEADERS += buttongroup.h \ mainform.h FORMS += mainform.ui Fordítsa és futtassa a programot. A program letölthet ő a people.inf.elte.hu/nacsa/qt4/eaf3/project/buttons3 címről. Gombcsoport felhasználói átméretezése (buttons4) Az előz ő példában futási idő ben, az objektum példányosításakor határoztuk meg, hogy hány gombot szeretnénk elhelyezni a felületen. Felmerülhet az az igény, hogy a program futása során többször is átméretezhessük a gombcsoportot. Feladat: Helyezzünk el a felületen egy Új méret gombot. A gombra kattintva egy párbeszédablakban megadhatjuk a gombcsoport új méretét. A felületen ezután az új méretezésnek megfelelően jelenjen meg a gombcsoport. Projekt neve: buttons4. Kiinduló projekt: buttons3. MainForm osztály ConfigDialog osztály 15. oldal

16 A feladatot a QtCreatorral oldjuk meg. 1. Indítsa el a QtCreatort, majd töltse be az előző projektet. 2. Hozzon létre egyúj dialógus ablakot: File/New/Qt Designer Form Class OK Dialog without Buttons Class name: ConfigDialog 3. Válassza ki a configdialog.ui felület definiáló fájlt 4. Készítse el a grafikus felületet! Típus Név Beállítások QLineEdit editrow QLineEdit editcol QPushButton okbutton Text: Rendben QPushButton cancelbutton Text: Mégse QLabel labelrow Text: Sorok száma: QLabel labelcol Text: Oszlopok száma: ConfigDialog osztály buttons4 projekt: configdialog.h #include <QDialog> #include "ui_configdialog.h" 16. oldal

17 class ConfigDialog : public QDialog, public Ui::ConfigDialog Q_OBJECT Q_DISABLE_COPY(ConfigDialog) public: explicit ConfigDialog(QWidget *parent = 0); public slots: void on_okbutton_clicked(); void on_cancelbutton_clicked(); ; buttons4 projekt: configdialog.cpp #include "configdialog.h" ConfigDialog::ConfigDialog(QWidget *parent) : QDialog(parent) setupui(this); void ConfigDialog::on_okButton_clicked() accept(); void ConfigDialog::on_cancelButton_clicked() reject(); MainFormosztály (kiegészítés) buttons4 projekt: mainform.h class MainForm : public QWidget, private Ui::MainForm Q_OBJECT Q_DISABLE_COPY(MainForm) public: explicit MainForm(QWidget *parent = 0); private slots: void on_exitbutton_clicked(); void my_on_buttongroup_clicked(int row, int col); ; void on_configbutton_clicked(); 17. oldal

18 buttons4 projekt: mainform.cpp void MainForm::on_configButton_clicked() int row, col; ConfigDialog dialog(this); if(dialog.exec()) row = dialog.rowedit >text().toint(); col = dialog.coledit >text().toint(); buttongroup >newbuttongroup(row,col); Az alkalmazás főprogramja buttons 4 projekt: main.cpp Lásd buttons3 projekt. Az alkalmazás projekt fájlja buttons4 projekt: buttons4.pro TARGET = buttons4 TEMPLATE = app SOURCES += main.cpp \ buttongroup.cpp \ mainform.cpp \ configdialog.cpp HEADERS += buttongroup.h \ mainform.h \ configdialog.h FORMS += mainform.ui \ configdialog.ui Többnyelvűség biztosítása (Qt Linguist) Egészítsük ki a decimális hexadecimális konvertáló programunkat oly módon, hogy a felületen magyar szöveg jelenjen meg. Ehhez a Qt Linguist programot fogjuk használni. Ahhoz, hogy az alkalmazásunk többféle nyelven is futtatható legyen Önnek az alábbiakat kell tennie: 1. Másolja át a convert projekt alábbi fájljait a convert_tr alkönyvtárba: (convertdialog.ui, convertdialog.h, convertdialog.cpp, main.cpp) 2. Készítse el a projekt leíró fájlt: qmake project 3. Módosítsa a projekt leíró fájlt (convert.pro módosítása) TEMPLATE = app TARGET = DEPENDPATH +=. INCLUDEPATH +=. 18. oldal

19 # Input HEADERS += convertdialog.h FORMS += convertdialog.ui SOURCES += convertdialog.cpp main.cpp TRANSLATIONS += convert_hu.ts 1. Gyűjtse ki a grafikus szöveges részeket (string) a projekt programjaiból: lupdate verbose convert_tr.pro Ez a program azokat a szövegrészeket gyűjti ki, melyeket a QString::fromUtf8("szöveg") alakban adtunk meg, azaz amelyeket a QString::fromUtf8 függvénnyel becsomagoltunk. 4. Készítse el a szótárat a Qt Linguis program segítségével. Indítsa el a programot, töltse be a convert_hu.ts fájlt és adja meg az angol szavak magyar megfelelőjét. 5. Készítse el az adott nyelv bináris fájlját: lrelease verbose convert_tr.pro 6. Futási időben (main() függvényben) beállíthatja a kívánt nyelvet. Módosítsa a main() függvényt az alábbiak szerint: #include <QApplication> #include <QTranslator> #include "convertdialog.h" int main (int argc, char *argv[]) QApplication app(argc,argv); QTranslator translator; translator.load("convert_hu"); app.installtranslator(&translator); ConvertDialog *dialog = new ConvertDialog; dialog >show(); return app.exec(); A program letölthető a people.inf.elte.hu/nacsa/qt4/eaf3/projects/convert_tr címről. 19. oldal

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

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

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

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

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

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

Alkalmazások fejlesztése III. Qt 4 /C++ alapú grafikus alkalmazás - Memóriajáték 1/2

Alkalmazások fejlesztése III. Qt 4 /C++ alapú grafikus alkalmazás - Memóriajáték 1/2 Tartalomjegyzék Memóriajáték...2 A memóriajáték osztálydiagramja...2 A projektben használt segéd függvények (Utils)...3 utils.h...3 utils.cpp...3 CardButton osztály...4 cardbutton.h...4 cardbutton.cpp...5

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

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

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

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

Eseménykezelés. Aszinkron kommunikáció

Eseménykezelés. Aszinkron kommunikáció Eseménykezelés Aszinkron kommunikáció Feladat Készítsünk egy stoppert, amely másodpercenként jelzi a múló időt. Ez a folyamat egy adott jelzés hatására induljon el; ugyanezen jelzés ismétléseinek hatására

Ré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 EAF3 Qt4 Bevezetés (mod01) 1 A Qt assistant nyitó ablaka www.trolltech.com

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

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

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

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

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

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

Eseményvezérelt alkalmazások fejlesztése I 3. előadás. Dinamikus felületű alkalmazások. Giachetta Roberto

Eseményvezérelt alkalmazások fejlesztése I 3. előadás. Dinamikus felületű alkalmazások. Giachetta Roberto Eötvös Loránd Tudományegyetem Informatikai Kar Eseményvezérelt alkalmazások fejlesztése I 3. előadás Dinamikus felületű alkalmazások Giachetta Roberto http://people.inf.elte.hu/groberto A felhasználói

Részletesebben

Dinamikus felületű alkalmazások. Stílusok, időzítő, képek

Dinamikus felületű alkalmazások. Stílusok, időzítő, képek Dinamikus felületű alkalmazások Stílusok, időzítő, képek Felhasználói felület fajtái Az alkalmazásaink grafikus felülete alapvetően kétféle lehet: statikus: az alkalmazás felületén lévő vezérlőket induláskor

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

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

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

3. Beadandó feladat dokumentáció

3. 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 programot a közismert Tic-Tac-Toe játékra. Ebben a játékban a játékosok egy -as játékmezőn

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

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

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

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

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

2. Beadandó feladat dokumentáció

2. Beadandó feladat dokumentáció 2. Beadandó feladat dokumentáció Készítette: Giachetta Roberto E-mail: groberto@inf.elte.hu Feladat: Készítsünk programot a következő memóriajátékhoz. A játéktáblán mező foglal helyet, amelyek különböző

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

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

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

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

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

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

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

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

Grafikus Felhasználói Felületű (GUI) program készítése a QT Creatorral, illetve a Microsoft Visual Studio-val

Grafikus Felhasználói Felületű (GUI) program készítése a QT Creatorral, illetve a Microsoft Visual Studio-val Grafikus Felhasználói Felületű (GUI) program készítése a QT Creatorral, illetve a Microsoft Visual Studio-val A feladat A feladat egy kis számológép elkészítése. A számológép a következőképpen néz majd

Részletesebben

2. Beadandó feladat dokumentáció

2. Beadandó feladat dokumentáció 2. Beadandó feladat dokumentáció Készítette: Giachetta Roberto E-mail: groberto@inf.elte.hu Feladat: Készítsünk programot a következő memóriajátékhoz. A játéktáblán mező foglal helyet, amelyek különböző

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

Eseménykezelés. Aszinkron kommunikáció

Eseménykezelés. Aszinkron kommunikáció Eseménykezelés Aszinkron kommunikáció Feladat Készítsünk egy stoppert, amely másodpercenként jelzi a múló időt. Ez a folyamat egy adott jelzés hatására induljon el; ugyanezen jelzés ismétléseinek hatására

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

Egyszerűbb a Google keresőbe beírni a Sharepoint Designer 2007 letöltés kulcsszavakat és az első találat erre a címre mutat.

Egyszerűbb a Google keresőbe beírni a Sharepoint Designer 2007 letöltés kulcsszavakat és az első találat erre a címre mutat. A feladat megoldásához a Sharepoint Designer 2007 programot használjuk, mely ingyenesen letölthető a Microsoft weboldaláról. Az érettségi aktuális szoftverlistája alapján az Expression Web 2, az Expression

Részletesebben

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

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

Programozás BMEKOKAA146. Dr. Bécsi Tamás 8. előadás

Programozás BMEKOKAA146. Dr. Bécsi Tamás 8. előadás Programozás BMEKOKAA146 Dr. Bécsi Tamás 8. előadás Visszatekintés A Windows Console alkalmazások egy karakteres képernyőt biztosítottak, ahol a kimenet a kiírt szöveg, míg a bemenet a billentyűzet volt.

Részletesebben

Programozási technológia

Programozási technológia Programozási technológia Grafikus felhasználói felület Dr. Szendrei Rudolf ELTE Informatikai Kar 2018. Grafikus felhasználói felület Két csomag elemeiből lehet a felületet elkészíteni awt,,heavy weight"

Részletesebben

Grafikus felhasználói felület (GUI) létrehozása A GUI jelentése Egy egyszerű GUI mintaalkalmazás létrehozása

Grafikus felhasználói felület (GUI) létrehozása A GUI jelentése Egy egyszerű GUI mintaalkalmazás létrehozása Alkalmazott Informatikai Intézeti Tanszék MŰSZAKI INFORMATIKA Dr.Dudás László 0. MATLAB alapismeretek IX. A GUI jelentése Egy egyszerű GUI mintaalkalmazás létrehozása Alkalmazott Informatikai Intézeti

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

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

Programozás II. 4. Dr. Iványi Péter

Programozás II. 4. Dr. Iványi Péter Programozás II. 4. Dr. Iványi Péter 1 inline függvények Bizonyos függvények annyira rövidek, hogy nem biztos hogy a fordító függvényhívást fordít, hanem inkább az adott sorba beilleszti a kódot. #include

Részletesebben

500. AA Megoldó Alfréd AA 500.

500. AA Megoldó Alfréd AA 500. Programozás alapjai 2. NZH 2010.05.13. gyakorlat: / Hiány:0 ZH:0 MEGOLD IB.027/51. Hftest: 0 Minden beadandó megoldását a feladatlapra, a feladat után írja! A megoldások során feltételezheti, hogy minden

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

GráfRajz fejlesztői dokumentáció

GráfRajz fejlesztői dokumentáció GráfRajz Követelmények: A GráfRajz gráfokat jelenít meg grafikus eszközökkel. A gráfot többféleképpen lehet a programba betölteni. A program a gráfokat egyedi fájl szerkezetben tárolja. A fájlokból betölthetőek

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

Osztályok. 4. gyakorlat

Osztályok. 4. gyakorlat Osztályok 4. gyakorlat Az osztály fogalma Az objektumok formai leírása, melyek azonos tulajdonsággal és operációkkal rendelkeznek. Osztályból objektum készítését példányosításnak nevezzük. Minden objektum

Részletesebben

Programozás II gyakorlat. 8. Operátor túlterhelés

Programozás II gyakorlat. 8. Operátor túlterhelés Programozás II gyakorlat 8. Operátor túlterhelés Kezdő feladat Írjunk egy Vector osztályt, amely n db double értéket tárol. A konstruktor kapja meg az elemek számát. Írj egy set(int idx, double v) függvényt,

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

Adatintegritá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. 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é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

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

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

Programozás C++ -ban 2007/7

Programozás C++ -ban 2007/7 Programozás C++ -ban 2007/7 1. Másoló konstruktor Az egyik legnehezebben érthető fogalom C++ -ban a másoló konstruktor, vagy angolul "copy-constructor". Ez a konstruktor fontos szerepet játszik az argumentum

Részletesebben

Dinamikus csatolású függvénykönyvtár készítése és használata Plugin-szerű betöltés Egyszeű C++ osztályok készítése

Dinamikus csatolású függvénykönyvtár készítése és használata Plugin-szerű betöltés Egyszeű C++ osztályok készítése FEJLETT PROGRAMOZÁSI NYELVEK, 2009 2. GYAKORLAT - Linux alatti C/C++ programozás Cél: Dinamikus csatolású függvénykönyvtár készítése és használata Plugin-szerű betöltés Egyszeű C++ osztályok készítése

Részletesebben

Hiteles elektronikus postafiók Perkapu

Hiteles elektronikus postafiók Perkapu Hiteles elektronikus postafiók Perkapu 2018.10.27. Tartalom Bevezetés...2 Bejelentkezés a Hiteles Elektronikus Postafiókba...2 Perkapu tárhely kiválasztása...2 Beérkezett üzenetek...3 Dokumentumletöltés...4

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

Bevezetés a Python programozási nyelvbe

Bevezetés a Python programozási nyelvbe Bevezetés a Python programozási nyelvbe 7. Gyakorlat osztályok, objektumok (utolsó módosítás 2018. aug. 28.) Szathmáry László Debreceni Egyetem Informatikai Kar 2018-2019, 1. félév OO programozás Pythonban

Részletesebben

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás: 2006. 03. 07.

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás: 2006. 03. 07. Java VI. Öröklődés Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2006. 03. 07. Java VI.: Öröklődés JAVA6 / 1 Egy kis kitérő: az UML UML: Unified Modelling Language Grafikus eszköz objektum

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

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

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

Eseményvezérelt és objektumorientált programozás

Eseményvezérelt és objektumorientált programozás DIALOG BOXES, DATA BINDING, STYLES, TRIGGERS WPF 1 Készítsük el a hallgatók és az oktatók nyilvántartását megvalósító modult. Mindkettő hasonló módon működik, ezért az alábbi leírásban csak a hallgatói

Részletesebben

Dropbox - online fájltárolás és megosztás

Dropbox - online fájltárolás és megosztás Dropbox - online fájltárolás és megosztás web: https://www.dropbox.com A Dropbox egy felhő-alapú fájltároló és megosztó eszköz, melynek lényege, hogy a különböző fájlokat nem egy konkrét számítógéphez

Részletesebben

Java Programozás 6. Gy: Java alapok. Adatkezelő 2.rész

Java Programozás 6. Gy: Java alapok. Adatkezelő 2.rész Java Programozás 6. Gy: Java alapok Adatkezelő 2.rész 25/1 B ITv: MAN 2018.04.13 A feladat Feladat: folytassuk a panel életre keltését! - Alakítsuk ki a Lista panelt - Betöltéskor olvassuk be az adatokat

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

Java és web programozás

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

Készítsen négy oldalas prezentációt az E CD bolt számára! Tervezze meg az emblémáját!

Készítsen négy oldalas prezentációt az E CD bolt számára! Tervezze meg az emblémáját! 2. feladat Készítsen négy oldalas prezentációt az E CD bolt számára! Tervezze meg az emblémáját! 1.Válasszon egyedi hátteret a prezentációnak! 2.Minden oldalon a bolt neve és emblémája jelenjen meg! Az

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

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

Felhasználói leírás a DimNAV Server segédprogramhoz ( )

Felhasználói leírás a DimNAV Server segédprogramhoz ( ) Felhasználói leírás a DimNAV Server segédprogramhoz (1.1.0.3) Tartalomjegyzék Bevezetés...3 1. Telepítés...3 2. Eltávolítás...4 Program használata...5 1. Kezdeti beállítások...5 2. Licenc megadása...6

Részletesebben

Entity Framework alapú adatbáziselérés

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

Adatbázis Rendszerek II. 5. PLSQL Csomagok 16/1B IT MAN

Adatbá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é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

1. Öröklés Rétegelés Nyilvános öröklés - isa reláció Korlátozó öröklődés - has-a reláció

1. Öröklés Rétegelés Nyilvános öröklés - isa reláció Korlátozó öröklődés - has-a reláció 1. Öröklés Az objektum orientált tervezés fontos sarkköve, az osztályok viszonyainak a megtervezése. 1.1. Rétegelés c l a s s Address {..... c l a s s Name {..... c l a s s P e r s o n { Name name ; Address

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

Programozás II gyakorlat. 7. Példák a polimorfizmus alkalmazásaira

Programozás II gyakorlat. 7. Példák a polimorfizmus alkalmazásaira Programozás II gyakorlat 7. Példák a polimorfizmus alkalmazásaira Probléma class A { public: ~A() { cout

Részletesebben

8. gyakorlat Pointerek, dinamikus memóriakezelés

8. gyakorlat Pointerek, dinamikus memóriakezelés 8. gyakorlat Pointerek, dinamikus memóriakezelés Házi ellenőrzés Egy számtani sorozat első két tagja A1 és A2. Számítsa ki a sorozat N- dik tagját! (f0051) Egy mértani sorozat első két tagja A1 és A2.

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

Műveletek makrókkal. Makró futtatása párbeszédpanelről. A Színezés makró futtatása a Makró párbeszédpanelről

Műveletek makrókkal. Makró futtatása párbeszédpanelről. A Színezés makró futtatása a Makró párbeszédpanelről Műveletek makrókkal A munkafüzettel együtt tárolt, minden munkalapon elérhető makrót a Fejlesztőeszközök szalag Makrók párbeszédpanelje segítségével nyithatjuk meg, innen végezhetjük el a makrókkal megoldandó

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

Objektumok inicializálása

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

C++ programozási nyelv

C++ programozási nyelv C++ programozási nyelv Gyakorlat - 13. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. december A C++ programozási nyelv Soós Sándor 1/10 Tartalomjegyzék Objektumok

Részletesebben

Programozás I. gyakorlat

Programozás I. gyakorlat Programozás I. gyakorlat 1. gyakorlat Alapok Eszközök Szövegszerkesztő: Szintaktikai kiemelés Egyszerre több fájl szerkesztése pl.: gedit, mcedit, joe, vi, Notepad++ stb. Fordító: Szöveges file-ban tárolt

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

Java programozási nyelv 4. rész Osztályok II.

Java programozási nyelv 4. rész Osztályok II. Java programozási nyelv 4. rész Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/17 Tartalomjegyzék

Részletesebben