Elemi alkalmazások fejlesztése III. A Qt assistant elindítása. Ajánlott ir odalom. A Qt assistant nyitó ablaka

Hasonló dokumentumok
Elemi alkalmazások fejlesztése III

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

Elemi alkalmazások fejlesztése III

Elemi alkalmazások fejlesztése III.

Elemi alkalmazások fejlesztése III.

Elemi alkalmazások fejlesztése III.

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

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

Budapest, március. ELTE Informatikai Kar

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

Elemi alkalmazások fejlesztése IV.

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

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

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

Elemi alkalmazások fejlesztése

Elemi alkalmazások fejlesztése III.

Elemi alkalmazások fejlesztése III

Elemi alkalmazások fejlesztése III.

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

Elemi alkalmazások fejlesztése III.

Eseménykezelés. Aszinkron kommunikáció

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

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

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

Elemi alkalmazások fejlesztése IV. Adatbázis-kezelő GUI alkalmazás készítése 3. Összetett tábla karbantartása

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

Elemi alkalmazások fejlesztése III

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

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

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

Eseménykezelés. Aszinkron kommunikáció

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

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

Elemi alkalmazások fejlesztése I.

QT Grafika Az alap alkalmazás felhasználói felülete

Programozás C++ -ban 2007/4

Programozási technológia

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

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

Programozási alapismeretek :: beadandó feladat. Felhasználói dokumentáció. Molnár Tamás MOTIABT.ELTE

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

Eseményvezérelt alkalmazások

Elemi alkalmazások fejlesztése IV. Adatbázis-kezelés ActiveX vezérlıkkel - 1

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

1. feladat. Szabóné Nacsa Rozália

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

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

3. Osztályok II. Programozás II

C#, OOP. Osztályok tervezése C#-ban

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

Mobil informatika gyakorlat. 2. óra: NFC a gyakorlatban

Hálózati alkalmazások

Bevezetés a programozásba Előadás: Fordítási egység

2. Beadandó feladat dokumentáció

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

Grafikus felület programozása Qt-ban (1. rész)

osztályok kapcsolata Származtatatás C++ Izsó Tamás március 19. Izsó Tamás Származtatatás/ 1

A feladat lényege egy felhasználói típusnak a zsák típusnak a megvalósítása.

Programozás C++ -ban

A 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

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

Eseményvezérelt alkalmazások fejlesztése I 2. előadás. Egyszerű, egyablakos alkalmazások

Bevezetés a programozásba Előadás: A const

Objektum elvű alkalmazások fejlesztése Kifejezés lengyel formára hozása és kiértékelése

Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben

Képfájlok beolvasása és megjelenítése

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

Eseményvezérelt alkalmazások fejlesztése I 11. előadás. Szoftverek tesztelése

Ugráló gomb oktatási segédlet Ugráló gomb

Adatbázis-kezelés ActiveX vezérl kkel

Hardver modellezés SystemC-vel és SDL grafikus könyvtárral Visual Stúdió alatt

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

C programozási nyelv


bool _freehand = false; QPoint _lastpoint; // ebben a pontban volt az utolsó rajzolásnál az egérmutató

2. Beadandó feladat dokumentáció

Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK. Sapientia EMTE

Programozás I. 5. Előadás: Függvények

Stateless Session Bean

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

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

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

abkezel.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class abkezel extends JFrame {

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

Programozás 6. Dr. Iványi Péter

Egyszerű, egyablakos alkalmazások. vezérlők, ablakok, elrendezők

Osztály és objektum fogalma

Tartalom DCOM. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés

Bevezetés a programozásba II. 8. Előadás: Osztályok, objektumok, osztályszintű metódusok

if(_param.antialias) painter.setrenderhint(qpainter::antialiasing, true);

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

Szerző. Varga Péter ETR azonosító: VAPQAAI.ELTE cím: Név: Kurzuskód:

Frontend készítés Qt alapokon

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

Bevezetés a Programozásba II 4. előadás. Adattípusok hordozhatósága

Könyvtári nyilvántartás

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

CitiDirect BE SM Felhasználói útmutató

4. Gyakorlat: Csoportházirend beállítások

Átírás:

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... Nyomtatható változat: www.trolltech.com-ról PDF formátumban készítette: Szabóné Nacsa Rozália lektorálta: Párniczky Krisztina 1 2 A Qt assistant elindítása A Qt assistant nyitó ablaka Alt F2-vel behívjuk a parancsablakot, majd kiadjuk az assistant parancsot. 3 4

GUI alkalmazás Qt osztályokkal 6

Form osztály definíció For m osztály implementáció 1 #ifndef FORM_H #define FORM_H #include <qwidget.h> #include <qvbox.h> class QHBox; class QSpinBox; class QSlider; class QLineEdit; form.h class Form: public QVBox public: Form(QWidget *parent=0, const char *name=0); private: QHBox *hbox; QSpinBox *spinbox; QSlider *slider; QLineEdit *lineedit; ; #endif Caption QVBox QHBox QSpinBox QSlider QLineEdit 15 #include <qhbox.h> #include <qspinbox.h> #include <qslider.h> #include <qlineedit.h> #include "form.h" form.cpp Caption QVBox QHBox QSpinBox QSlider QLineEdit 16

Form osztály implementáció 2 Form::Form(QWidget *parent, const char *name) :QVBox(parent,name) setmargin(6); Caption setspacing(6); hbox = new QHBox(this); lineedit = new QLineEdit(this); hbox->setmargin(6); hbox->setspacing(6); spinbox = new QSpinBox(hbox); slider = new QSlider(Qt::Horizontal,hbox); slider->setrange(0,10); spinbox->setrange(0,10); spinbox->setvalue(5); QVBox QHBox QSpinBox QSlider QLineEdit connect(slider,signal(valuechanged(int)),spinbox,slot(setvalue(int))); connect(spinbox,signal(valuechanged(int)),slider,slot(setvalue(int))); form.cpp 17 class Form: public QVBox Q_OBJECT Saját slot kezelése - definíció public: Form(QWidget *parent=0, const char *name=0); private: QHBox *hbox; QSpinBox *spinbox; QSlider *slider; QLineEdit *lineedit; QString words[11]; void initwords(); public slots: void sayasword(int i); ; form.h A Q_OBJECT makróban vannak a moc számára a függvénydeklarációk. moc: meta object compiler Nem szabványos C++ elem. A moc készíti el a szabványos C++ kódot. 18 Saját slot kezelése implementáció 1 Saját slot kezelése implementáció 2 Form::Form(QWidget *parent, const char *name) :QVBox(parent,name) setmargin(6); setspacing(6); form.cpp void Form::sayAsWord(int i) lineedit->settext(words[i]); form.cpp connect(slider,signal(valuechanged(int)),spinbox,slot(setvalue(int))); connect(spinbox,signal(valuechanged(int)),slider,slot(setvalue(int))); connect(slider,signal(valuechanged(int)),this,slot(sayasword(int))); initwords(); spinbox->setvalue(5); A kezdőértéket a kapcsolat kiépítése után kell beállítani Saját slot void Form::initWords() words[0] = "null"; words[1] = "one"; words[10] = "ten"; 19 20

Form osztály definíció For m osztály implementáció 1 #include <qwidget.h> class QSpinBox; class QSlider; class QLineEdit; form.h class Form: public QWidget Q_OBJECT public: Form(QWidget *parent=0, const char *name=0); private: QSpinBox *spinbox; QSlider *slider; QLineEdit *lineedit; QString words[11]; void initwords(); Caption QSpinBox QSlider QLineEdit #include <qlayout.h> #include <qspinbox.h> #include <qslider.h> #include <qlineedit.h> #include "form.h" form.cpp Caption QSpinBox QSlider QLineEdit public slots: void sayasword(int i); ; 25 26 Form osztály implementáció 2 Form::Form(QWidget *parent, const char *name):qwidget(parent,name) spinbox = new QSpinBox(this); slider = new QSlider(Qt::Horizontal,this); slider->setrange(0,10); spinbox->setrange(0,10); Caption lineedit = new QLineEdit(this); form.cpp QHBoxLayout *toplayout = new QHBoxLayout; toplayout->addwidget(spinbox); toplayout->addwidget(slider); QSpinBox QSlider QVBoxLayout *mainlayout = new QVBoxLayout(this); mainlayout->addlayout(toplayout); mainlayout->addwidget(lineedit); mainlayout->setmargin(11); mainlayout->setspacing(6); QLineEdit connect(slider,signal(valuechanged(int)),spinbox,slot(setvalue(int))); connect(spinbox,signal(valuechanged(int)),slider,slot(setvalue(int))); connect(spinbox,signal(valuechanged(int)),this,slot(sayasword(int))); initwords(); spinbox->setvalue(5); 27

A.ui fájl és a generált kód Qt designer form.ui GUI alkalmazás Qt Designerrel UIC form.h 29 Írás, olvasás Olvasás Generálás #includes Eszköz (tool) Generált forráskód Felhasználó forráskódja form.cpp main.cpp 30 Szár maztatásos modulszer kezet ui.h -s modulszer kezet Qt designer form.ui Örökl ő dés Qt designer form.ui.h form.ui UIC formbase.h form.h Az alkalmazásspecifius funkciókat a form.ui.h implementációs fájlban adjuk meg. UIC form.h Írás, olvasás Olvasás Generálás #includes Eszköz (tool) Generált forráskód Felhasználó forráskódja formbase.cpp form.cpp main.cpp A formbase.h és a formbase.cpp minden módosításnál újra generálódik. Az alkalmazás specifikus funkciókat a származtatott osztályban adjuk meg. 31 Írás, olvasás Olvasás Generálás #includes Eszköz (tool) Generált forráskód Felhasználó forráskódja form.cpp main.cpp 32

A QtDesigner ablakai ProjectOverview Toolbox ObjectExplorer Properties Editor/ Signal Handlers 34

Edit/Connections <connections> <connection> form.ui <sender>slider</sender> <signal>valuechanged(int)</signal> <receiver>spinbox</receiver> <slot>setvalue(int)</slot> </connection> <connection> <sender>spinbox</sender> <signal>valuechanged(int)</signal> <receiver>slider</receiver> <slot>setvalue(int)</slot> </connection> </connections> 39

#include <qapplication.h> #include "form.h" Generált main.cpp program int main( int argc, char ** argv ) QApplication a( argc, argv ); Form w; w.show(); a.connect( &a, SIGNAL( lastwindowclosed() ), &a, SLOT( quit() ) ); return a.exec(); 45

Saját slot implementálása void Form::slotTextChanged_( const QString & s ) bool l=false; for (int i=0; i< (int) sizeof(words)/sizeof(words[0]) &&!l;i++) if(words[i]==s) l=true; slider->setvalue(i); 50 Legyen Ön is milliomos példa Szerkeszthet ő szöveg Gomb + kép LCD kijelző Gomb csoport Gomb + szöveg Radio Button 52

Szövegdoboz elhelyezése A Qt eszköztárából válasszuk ki a TextEdit eszközt 1 1 PushButton Pixmap gomb elhelyezése 2 3 2 Kattintsunk a vezérl ő elem tervezett helyére. 3 Kattintsunk a szövegdoboz tervezett helyére. 53 4 Válaszunk képet a gomb felirata helyett. 54 1 LCDNumber Számkijelz ő elhelyezése Távtartó (spacer) elhelyezése Spacer 2 Az endbutton és az LCD kijelz ő közé elhelyezhetünk egy távtartót. 55 56

Elrendezés szabályozása 2 Kattintsunk a Lay Out Vertically gombra. Layout toolbar Ezzel a gombbal lehet megszüntetni a csoportot. Jelöljük ki egyszerre mindhárom elemet. 1 A piros keret jelzi az elemek összetartozását 57 58 TextLabel Kérdés elhelyezése ButtonGroup Válasz keret elhelyezése 59 60

Radio Button Válaszok elhelyezése 1 Válaszok elhelyezése 2 61 62 A Következő gomb elhelyezése 63 64

Grid Layout A szabályos elrendezéshez kattintson a Lay Out in a Grid gombra Ne legyen elem kiválasztva. 65 #include <qapplication.h> #include "millmain.h" int main( int argc, char ** argv ) QApplication a( argc, argv ); MillMain w; w.show(); a.connect( &a, SIGNAL( lastwindowclosed() ), &a, SLOT( quit() ) ); return a.exec(); 67

Következ ő kérdés feladása - nextquestion() Válasz ellenő rzése - checkanswer() Kilépés - endbutton() Következ őkérdés feladása - nextquestion() Válasz ellenő rzése - checkanswer() Kilépés - endbutton() connect( nextbutton, SIGNAL( clicked() ), this, SLOT( nextquestion() ) ); connect( ansgroup, SIGNAL( clicked(int) ), this, SLOT( checkanswer(int) ) ); connect( endbutton, SIGNAL( clicked() ), this, SLOT( endgame() ) ); 69 70

millmain.ui.h Qt designer millmain.ui.h millmain.ui form.ui void MillMain::nextQuestion() qwarning( tr("millmain::nextquestion(): Not implemented yet" )); UIC millmain.h void MillMain::checkAnswer( int ) qwarning( tr("millmain::nextquestion(): Not implemented yet" )); Írás, olvasás Olvasás Generálás #includes Eszköz (tool) Generált forráskód Felhasználó forráskódja millmain.cpp main.cpp 73 void MillMain::endGame() qwarning( tr("millmain::nextquestion(): Not implemented yet" )); 74 Vége, de... A munkafüzet programjai letölthetők a people.inf.elte.hu/nacsa/eaf3/projects címről. 76