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

Hasonló dokumentumok
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

Elemi alkalmazások fejlesztése III.

Elemi alkalmazások fejlesztése III

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.

Budapest, március. ELTE Informatikai Kar

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

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

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

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

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

Elemi alkalmazások fejlesztése IV.

Elemi alkalmazások fejlesztése III.

Eseménykezelés. Aszinkron kommunikáció

Elemi alkalmazások fejlesztése III.

Elemi alkalmazások fejlesztése III.

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

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

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

Eseménykezelés. Aszinkron kommunikáció

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

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

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

Programozás C++ -ban 2007/4

Elemi alkalmazások fejlesztése III

Eseményvezérelt alkalmazások

Elemi alkalmazások fejlesztése III

Adatbázis-kezelés ODBC driverrel

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

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

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

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

Hálózati alkalmazások

Stateless Session Bean

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

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

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

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

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

Programozási technológia

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

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

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

Országzászlók (2015. május 27., Sz14)

Java programozási nyelv 8. rész Grafikus felhasználói felület

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

OKTATÓANYAG. Cseh Péter. Webes alkalmazás készítése JDeveloper segítségével CSPOAAI.ELTE

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

Avery Design Pro 4.0

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

Osztály és objektum fogalma

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

Proxer 7 Manager szoftver felhasználói leírás

Python modul készítés QGIS 2.8

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

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

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

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

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

Programozás C++ -ban

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

Rajz 06 gyakorló feladat

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

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

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

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

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

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

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

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

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II / 19

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

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

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

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

117. AA Megoldó Alfréd AA 117.

Kézikönyv ABAS-TOOLS használata

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

WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens

Alap számológép alkalmazás

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

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

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

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

ADATBÁZISKEZELÉS KÖZVETLEN ELÉRÉSSEL II...2

Frontend készítés Qt alapokon

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

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

Programozás alapjai 1. (BMEVIEEA100)

Vizuális, eseményvezérelt programozás I.

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

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.

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

2. Beadandó feladat dokumentáció

Átírás:

#include <qapplication.h> #include <qlabel.h> 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();

QLabel *label = new QLabel("<h1><i>Hello</i><font color=red> Qt!</font></h1>",0); #include <qapplication.h> #include <qpushbutton.h> int main(int argc, char *argv[]) QApplication app(argc,argv); QPushButton *button = new QPushButton("Quit",0); QObject::connect(button,SIGNAL(clicked()),&app,SLOT(quit())); app.setmainwidget(button); button->show(); return app.exec();

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

Form::Form(QWidget *parent, const char *name) :QVBox(parent,name) setmargin(6); 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); // intervallum spinbox->setrange(0,10); // intervallum spinbox->setvalue(5); connect(slider,signal(valuechanged(int)),spinbox,slot(setvalue(int))); connect(spinbox,signal(valuechanged(int)),slider,slot(setvalue(int))); #include <qapplication.h> #include "form.h" int main(int argc, char *argv[]) QApplication app(argc,argv); Form *form = new Form; app.setmainwidget(form); form->show(); return app.exec();

#ifndef FORM_H #define FORM_H #include <qwidget.h> #include <qvbox.h> class QHBox; class QSpinBox; class QSlider; class QLineEdit; class Form: public QVBox Q_OBJECT 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: ; #endif void sayasword(int i);

TEMPLATE = app INCLUDEPATH +=. # Input HEADERS += form.h SOURCES += form.cpp main.cpp

#ifndef FORM_H #define FORM_H #include <qwidget.h> class QSpinBox; class QSlider; class QLineEdit; class Form: public QWidget Q_OBJECT public: Form(QWidget *parent=0, const char *name=0);

private: public slots: ; #endif QSpinBox *spinbox; QSlider *slider; QLineEdit *lineedit; QString words[11]; void initwords(); void sayasword(int i); void slottextchanged ( const QString & ); #include <qlayout.h> #include <qspinbox.h> #include <qslider.h> #include <qlineedit.h> #include "form.h" 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); lineedit = new QLineEdit(this); QHBoxLayout *toplayout = new QHBoxLayout; //nincs szülje toplayout->addwidget(spinbox); toplayout->addwidget(slider); QVBoxLayout *mainlayout = new QVBoxLayout(this); mainlayout->addlayout(toplayout); mainlayout->addwidget(lineedit); mainlayout->setmargin(11); mainlayout->setspacing(6); 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);

void Form::sayAsWord(int i) lineedit->settext(words[i]); void Form::initWords() words[0] = "null";... words[10] = "ten"; TEMPLATE = app INCLUDEPATH +=. # Input HEADERS += form.h SOURCES += form.cpp main.cpp

Indítsa el a Qt Designert. File/New/C++ project/ok Project file: (Célkönyvtár megkeresése) words.pro OK File/New/Widget/OK name: Form caption: Form File/Save As : form.ui

1. A Shift billentyt lenyomva tartva jelölje ki az spinbox-ot és a slider-t, majdadjakialayout / Lay Out Horizontally parancsot. A két elemet körbefoglaló piros keret jelzi az elemek "összetartozását". A Layout/ Break Layout paranccsal bármikor feloldhatja ezt a kapcsolatot. ( Érdemes megkeresni a parancsok mefeleljét az eszköztárban is.) Most pedig jelölje ki a lineedit szövegdobozt, valamint az el z ekben létrehozott, összetartozó piros keretet és adja ki a Layout/ Lay Out Verically parancsot. 3. Kattintson a teljes ablakra (MillMain), majd adja ki a Layout/Lay Out in Grid parancsot. File/New/C++ Main File(main.cpp)/OK/OK #include <qapplication.h> #include "form.h" 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();

Object Explorer/Members/Class Varibles/Private/Dupla kattintás/add Variable: QString words[11] Access: private <variables> <variable access="private">qstring words[11];</variable> </variables> A Project Overview ablakban válassza ki a Form rlapot. Edit/Slots... / New Function Function: initwords() Return type: void Specifier: non virtual Access: private Type: function <functions> <function access="private" specifier="non virtual">initwords()</function> </functions> void Form::initWords() words[0] = "null";... words[10] = "ten"; A Project Overview ablakban válassza ki a Form rlapot. Edit/Slots... / New Function Function: init() Return type: void Specifier: virtual Access: protected Type: function

void Form::init() spinbox->setmaxvalue(10); //Beállítható a QtDesigner-ben is slider->setmaxvalue(10); //Beállítható a QtDesigner-ben is initwords(); spinbox->setvalue(5); Edit/Connections/New Sender: slider Signal: valuechanged(int) Receiver: spinbox Slot: setvalue(int) Edit/Connections/New Sender: spinbox Signal: valuechanged(int) Receiver: slider Slot: setvalue(int) A Project Overview ablakban válassza ki a Form rlapot. Edit/Slots... / New Function Function: sayasword(int) Return type: void Specifier: virtual Access: public Type: slot void Form::sayAsWord( int i) lineedit->settext(words[i]); TEMPLATE = app INCLUDEPATH +=. # Input HEADERS += form.ui.h INTERFACES += form.ui SOURCES += main.cpp

Indítsa el a Qt Designert. File/New/C++ project/ok Project file: (Célkönyvtár megkeresése) mill.pro OK

File/New/Widget/OK name: MillMain (ez a párbeszédablak elem azonosítója) caption: Legyen Ön is milliomos (a párbeszédablak cimkéje) File/Save As : millmain.ui (elfogadjuk a párbeszédablak felajánlott nevet) nevébl származtatott 1. A Qt eszköztárából válassza ki a TextEdit eszközt, majd kattintson a MillMain ablakon a szövegdoboz tervezett helyének a környékére. (Az elemek percíz elrendezésével nem kell tördnünk, mert a legvégén a kattintgatásos Layout technika segítségével majd szépen elrendezzük az elemeket. ) 2. A Properties ablakban a Name mez értéke legyen: text (Common Widgets) PushButton eszközgomb, majd kattintás a a gomb várható helyére. Properties: name: endbutton pixmap: (elérési út) home.png (vagy akármilyen más kép) (Display) LCD number eszközgomb Properties: name: moneyvalue numdigits: 9 minimumsize: height - 40, fontsize: size - 28 Megjegyzés: Ha azt szeretnénk, hogy az LCD kijelznk ne legyen aránytalanul nagy, akkor az endbutton és az LCD kijelz közé elhelyezhetünk egy "rugót, távtartót" (spacer) is. 1. A Shift billentyt lenyomva tartva jelölje ki az endbutton-t, a spacer-t és a moneyvalue elemeket, majd adja ki a Layout / Lay Out Vertically parancsot. 2. Most pedig jelölje ki a text szövegdobozt, valamint az el z ekben létrehozott, összetartozó piros keretet és adja ki a Layout/ Lay Out Horizontally parancsot. (Common Widgets) Text Label eszközgomb, majd kattintás a text szövegdoboz alá. Properties: name: questionlabel text: (üres) halign: AlignHCenter valign: AlignVCenter frameshape: Box frameshadow: Sunken

Properties: name: ansgroup title: Kattintson a megfelel válaszra! Properties: 1. válasz name: ans1 text: Els válasz 2. válasz 3. válasz 4. válasz name: ans2 text: Második válaz name: ans3 text: Harmadik válasz name: ans4 text: Negyedik válasz 1. A Shift billentyt lenyomva tartva válasszuk ki rendre a négy Radio Button elemet, majd adjuk ki a Layout/Lay Out in Grid parancsot (van ilyen gomb is az eszközök között). 2. Kattintsunk a válaszokat tartalmazó keretre, majd ismét adjuk ki a Layout/Lay Out in Grid parancsot. Megjegyzés: Ügyeljen arra, hogy a GroupButton-ban a rádió gombok sorrendje megegyezzen az itt megadott sorrenddel. (A Qt Designerben, az Object Explorer/Members ablakban ilyen sorrendben legyenek a gombok.) PushButton eszköz kiválasztása, majd kattintás a válasz blokk alá. Properties: name: nextbutton text: Következ Helyezzünk el egy vízszintes távtartót (spacer) a Következ gomb elé. Kattintson a párbeszédablakra (csak a formra, ne valamelyik elemére), majd adja ki a Layout / Lay Out Vertically parancsot, azaz rendezze a párbeszédablak elemeit vertikálisan. A Ctrl+T billentyk leütésével tesztelheti a párbeszédablak "küllemét". Figyelje meg mi történik az ablak átméretezésekor. A párbeszédablak "Bezárás" gombjával fejezheti be a tesztelést. Szükség esetén bármikor törölhet egy-egy elrendezést (Layout/ Break Layout) és új elrendezést alakíthat ki.

Ha elégedett a végeredménnyel, akkor mentse el a grafikus felület definícióját tartalmazó millmainbase.ui (ui: user interface) fájlt. File/New/C++ Main File(main.cpp)/OK/OK #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();

A Project Overview ablakban válassza ki a Form rlapot. Edit/Slots... / New Function Function: nextquestion() Return type: void Specifier: virtual Access: public Type: slot void MillMain::nextQuestion( ) qwarning( tr("millmain::nextquestion(): Not implemented yet" )); Edit/Connections/New a szignál küldje (Sender): nextbutton a szignál fajtája (Signal) : clicked() a szignál fogadására bejelentkez objektum (Receiver) : MillMain a szignált kezel metódus (Slot) : nextquestion() connect( nextbutton, SIGNAL( clicked() ), this, SLOT( nextquestion() ) ); Edit/Connections/New Sender: ansgroup Signal: clicked(int) Receiver: MillMain Slot: checkanswer(int)

Sender: endbutton Signal: clicked() Receiver: MillMain Slot: endgame() // signals and slots connections connect( nextbutton, SIGNAL( clicked() ), this, SLOT( newquestion() ) ); connect( ansgroup, SIGNAL( clicked(int) ), this, SLOT( checkanswer(int) ) ); connect( endbutton, SIGNAL( clicked() ), this, SLOT( endgame() ) ); <connection> itt van a kapcsolatot leíró információ </connection>