Elemi alkalmazások fejlesztése III.

Hasonló dokumentumok
Elemi alkalmazások fejlesztése III.

Elemi alkalmazások fejlesztése III

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

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

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

Budapest, március. ELTE Informatikai Kar

Elemi alkalmazások fejlesztése III

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

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

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

Eseménykezelés. Aszinkron kommunikáció

Elemi alkalmazások fejlesztése III.

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

Elemi alkalmazások fejlesztése III.

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

Elemi alkalmazások fejlesztése III.

Eseménykezelés. Aszinkron kommunikáció

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

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

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

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

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

Elemi alkalmazások fejlesztése IV.

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

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

Elemi alkalmazások fejlesztése III

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

Elemi alkalmazások fejlesztése III

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

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

Hálózati alkalmazások

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

2. Beadandó feladat dokumentáció

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

2. Beadandó feladat dokumentáció

Programozás C++ -ban 2007/4

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

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

Elemi alkalmazások fejlesztése

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

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

Összetett alkalmazások

Alkalmazott modul: Programozás 12. előadás. Grafikus felületű alkalmazások fejlesztése

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

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

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

Osztály és objektum fogalma

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

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

Származtatási mechanizmus a C++ nyelvben

Informatikai Navigátor

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

Programozás C++ -ban

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

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

Eseményvezérelt alkalmazások

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

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

Eseményvezérelt alkalmazások fejlesztése I 8. előadás. Adatbázis-kezelés modell/nézet architektúrában

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

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

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

Programozási technológia

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

C++ programozási nyelv Struktúrák a C++ nyelvben Gyakorlat

Kivételkezelés a C++ nyelvben Bevezetés

Modell megvalósítása. Gregorics Tibor: Eseményvezérelt alkalmazások fejlesztése I.

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

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

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

Bevezetés a programozásba előadás: Öröklődés

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

Objektumok inicializálása

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

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

Eseményvezérelt alkalmazások fejlesztése I 10. előadás. Adatbázis-kezelés modell/nézet architektúrában. Giachetta Roberto

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

Adatbázis-kezelés ActiveX vezérl kkel 2.rész

Johanyák Zsolt Csaba: Grafikus felület programozása. Copyright 2008 Johanyák Zsolt Csaba

3. Osztályok II. Programozás II

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

main int main(int argc, char* argv[]) { return 0; } main return 0; (int argc, char* argv[]) main int int int main main main

Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia

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

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

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

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

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

117. AA Megoldó Alfréd AA 117.

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

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

Concurrency in Swing

Elemi alkalmazások fejlesztése I.

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

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

Eseményvezérelt alkalmazások fejlesztése I. Tantárgyfelelős: Gregorics Tibor

Eseményvezérelt alkalmazások fejlesztése I. Tantárgyfelelős: Gregorics Tibor

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

Átírás:

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 www.trolltech.com http://qt.nokia.com http://qt.nokia.com/doc/4.5/index.html 2

Assistant 3

GUI alkalmazás Qt osztályokkal 4

Qt osztályok (részlet) 5

Hello Qt alkalmazás QObject QLabel QApplication main.cpp #include <QApplication> #include <QLabel> int main(int argc,char **argv) QApplication app(argc,argv); QLabel *label = new QLabel("<h1><i>Hello</i><font color=red>qt!</font></h1>"); QLabel *label = new QLabel("Hello Qt!"); label >show(); return app.exec(); people.inf.elte.nacsa/qt4/eaf3/mod01/projects/hello 6

Fordítás/futtatás parancs sorból Linux qmake project qmake hello.pro make./hello 7

Eseménykezelés signal slot mechanizmussal kattintás esemény connect adas1(signal) vétel1(slotl) eseménykezelő... emit adas1(); emit adas2(); emit adas3(); adas2(signal) adas3(signal) vétel3(slotl) public slots: void vétel1(); void vétel3(); Adás vétel (pl. rádió) 8

Jelek és jelvevők összekapcsolása QObject QPushButton QApplication main.cpp #include <QApplication> #include <QPushButton> int main(int argc, char *argv[]) QApplication app(argc,argv); QPushButton *button = new QPushButton("Quit"); QObject::connect(button,SIGNAL(clicked()),&app,SLOT(quit())); A gomb clicked() jelzését összekapcsoljuk az alkalmazás quit() jelvevő függvényével (slot). button >show(); return app.exec(); people.inf.elte.nacsa/qt4/eaf3/mod01/projects/quit 9

Több vezérlő összekapcsolása, együttműködésük összehangolása form.h form.cpp main.cpp Caption mainlayout QSpinBox QSlider toplayout QLCDNumber 10

A grafikus felület osztály definiálása (Form osztály) form.h #ifndef _FORM_H_ #define _FORM_H_ #include <QWidget> class QSpinBox; class QSlider; class QLCDNumber; class Form: public Qwidget Q_OBJECT Caption QSpinBox QSlider public: Form(QWidget *parent=0); QLCDNumber private: QSpinBox *spinbox; QSlider *slider; QLCDNumber *lcd; ; #endif //_FORM_H_ 11

Form osztály: konstruktor form.cpp Form::Form(QWidget *parent) : QWidget(parent) spinbox = new QSpinBox; setobjectname(qstring::fromutf8("spinbox")); spinbox >setrange(0,10); spinbox >setmaximum(1000); #include <QLayout> #include <QSpinBox> #include <QSlider> #include <QLCDNumber> #include "form.h" Caption slider = new QSlider(Qt::Horizontal); setobjectname(qstring::fromutf8("slider")); slider >setrange(0,10); slider >setmaximum(1000); slider >setsinglestep(100); slider >setorientation(qt::horizontal); slider >settickposition(qslider::ticksbelow); lcd = new QLCDNumber; setobjectname(qstring::fromutf8("lcd"));... QSpinBox QSlider QLCDNumber Vezérlők létrehozása és tulajdonságainak beállítása. 12

A Form osztály konstruktora elrendezés form.cpp Form::Form(QWidget *parent) : Qwidget(parent)... Elemek elrendezése. QHBoxLayout *toplayout = new QHBoxLayout; toplayout >addwidget(spinbox); toplayout >addwidget(slider); QVBoxLayout *mainlayout = new QVBoxLayout; Caption QSpinBox QSlider mainlayout >addlayout(toplayout); mainlayout >addwidget(lcd); mainlayout >setmargin(11); mainlayout >setspacing(6); QLCDNumber setlayout(mainlayout); connect(spinbox, SIGNAL(valueChanged(int)), lcd, SLOT(display(int))); connect(spinbox, SIGNAL(valueChanged(int)), slider, SLOT(setValue(int))); connect(slider, SIGNAL(sliderMoved(int)), lcd, SLOT(display(int))); connect(slider, SIGNAL(valueChanged(int)), spinbox, SLOT(setValue(int))); Jeladók és jelfeldolgozók összekapcsolása. 13

Fordítás, futtatás main.cpp lcd.pro #include <QApplication> #include "form.h" int main(int argc, char *argv[]) QApplication app(argc,argv); Form *form = new Form; form >show(); TEMPLATE = app TARGET = DEPENDPATH +=. INCLUDEPATH +=. # Input HEADERS += form.h SOURCES += form.cpp main.cpp qmake project qmake lcd.pro make./make return app.exec(); people.inf.elte.nacsa/qt4/eaf3/mod01/projects/lcd 14

Memóriagazdálkodás mainlayout toplayout Caption Form QSpinBox(spinBox) QSpinBox QSlider QSlider(slider) QLCDNumber QLCDNumber(lcd) QVBoxLayou(mainLayout) QVBoxLayou(topLayout) Csak azokat a widget eket kell törölni, amelyeket new operátorral hozunk létre és nincs szülője. 15

Digitális óra készítése digitalclock.h digitalclock.cpp Esemény kiváltása nem vizuális elemmel. main.cpp people.inf.elte.nacsa/qt4/eaf3/mod01/projects/digitalclock 16

Ismétlő időzítő, egyszeri időzítő QTimer QTimer 17

Digitális óra definíciója digitalclock.h #include <QLCDNumber> class DigitalClock : public QLCDNumber Q_OBJECT public: DigitalClock(QWidget *parent = 0); digitalclock.cpp private slots: void showtime(); ; DigitalClock::DigitalClock(QWidget *parent) : QLCDNumber(parent) setsegmentstyle(filled); QTimer *timer = new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(showTime())); timer >start(1000); showtime(); setwindowtitle(tr("digital Clock")); resize(150, 60); void DigitalClock::showTime() QTime time = QTime::currentTime(); QString text = time.tostring("hh:mm"); if ((time.second() % 2) == 0) text[2] = ' '; display(text); #include <QTimer> #include <QDateTime> #include "digitalclock.h" 18

Digitális óra definíciója digitalclock.pro TEMPLATE = app TARGET = DEPENDPATH +=. INCLUDEPATH +=. # Input HEADERS += digitalclock.h SOURCES += digitalclock.cpp main.cpp main.cpp #include <QApplication> qmake project qmake lcd.pro make./make #include "digitalclock.h" int main(int argc, char *argv[]) QApplication app(argc, argv); DigitalClock clock; clock.show(); return app.exec(); 19

Felület tervező használata Tervező Grafikus felület form.ui uic Ui_Form ui_form.h 20

GUI osztály felhasználása Ui_Form Ui_Form QWidget Form Form #include "ui_form.h" class Form : public QWidget Q_OBJECT Q_DISABLE_COPY(Form) public: explicit Form(QWidget *parent = 0); private: Ui::Form m_ui; private slots: void on_quitbutton_clicked(); ; #include "ui_form.h" class Form : public QWidget, private Ui::Form Q_OBJECT Q_DISABLE_COPY(Form) public: explicit Form(QWidget *parent = 0); private slots: void on_quitbutton_clicked(); ; 21

GUI osztály felhasználása #include "ui_form.h" class Form : public QWidget Q_OBJECT Q_DISABLE_COPY(Form) public: explicit Form(QWidget *parent = 0); private: Ui::Form m_ui; private slots: void on_quitbutton_clicked(); ; #include "ui_form.h" class Form : public QWidget, private Ui::Form Q_OBJECT Q_DISABLE_COPY(Form) public: explicit Form(QWidget *parent = 0); private slots: void on_quitbutton_clicked(); ; #include "form.h" Form::Form(QWidget *parent) : QWidget(parent) m_ui.setupui(this); #include "form.h" Form::Form(QWidget *parent) : QWidget(parent) setupui(this); void Form::on_quitButton_clicked() qapp >quit(); void Form::on_quitButton_clicked() qapp >quit(); 22

A bemutatott programok megtalálhatók a people.inf.elte.nacsa/qt4/eaf3/projects/ címen. 23