kØszítette: SzabónØ Nacsa RozÆlia bemutato.pdfLegyen Ön is milliomos! Gomb + kØp Szerkeszthet...

Post on 21-Feb-2020

6 views 0 download

Transcript of kØszítette: SzabónØ Nacsa RozÆlia bemutato.pdfLegyen Ön is milliomos! Gomb + kØp Szerkeszthet...

Elemi alkalmazások fejlesztése IIIElemi alkalmazások fejlesztése IIIElemi alkalmazások fejlesztése IIIElemi alkalmazások fejlesztése IIIElemi alkalmazások fejlesztése IIIElemi alkalmazások fejlesztése IIIElemi alkalmazások fejlesztése IIIElemi alkalmazások fejlesztése IIIElemi alkalmazások fejlesztése IIIElemi alkalmazások fejlesztése III

Egyablakos alkalmazás készítése I. Egyablakos alkalmazás készítése I. Qt/X11 felhasználásával Qt/X11 felhasználásával Kdevelop környezetbenKdevelop környezetben

készítette:készítette:Steingart Ferenc Steingart Ferenc

Szabóné Nacsa RozáliaSzabóné Nacsa Rozália

Qt dokumentáció Qt dokumentáció

online: www.trolltech.comwww.trolltech.comlokális változat:Kdevelop help vagy /usr/share/doc.../usr/share/doc...Nyomtatható változat: www.trolltech.comwww.trolltech.com-ról PDF formátumban

KDevelop dokumentációKDevelop dokumentáció

Ajánlott irodalomAjánlott irodalomAjánlott irodalomAjánlott irodalomAjánlott irodalomAjánlott irodalomAjánlott irodalomAjánlott irodalomAjánlott irodalomAjánlott irodalom

Alt F2-vel behívjuk a parancsablakot, majd kiadjuk az assistant parancsot.

A Qt assistant elindításaA Qt assistant elindításaA Qt assistant elindításaA Qt assistant elindításaA Qt assistant elindításaA Qt assistant elindításaA Qt assistant elindításaA Qt assistant elindításaA Qt assistant elindításaA Qt assistant elindítása

A Qt assistant nyitó ablakaA Qt assistant nyitó ablakaA Qt assistant nyitó ablakaA Qt assistant nyitó ablakaA Qt assistant nyitó ablakaA Qt assistant nyitó ablakaA Qt assistant nyitó ablakaA Qt assistant nyitó ablakaA Qt assistant nyitó ablakaA Qt assistant nyitó ablaka

A A A A A A A A A A callbackcallback mechanizmus és a mechanizmus és a mechanizmus és a mechanizmus és a mechanizmus és a mechanizmus és a mechanizmus és a mechanizmus és a mechanizmus és a mechanizmus és a signal/slotsignal/slot mechanizmus összehasonlításamechanizmus összehasonlításamechanizmus összehasonlításamechanizmus összehasonlításamechanizmus összehasonlításamechanizmus összehasonlításamechanizmus összehasonlításamechanizmus összehasonlításamechanizmus összehasonlításamechanizmus összehasonlítása

Feladat: Feladat: Jelenítsük meg a csúszka (slider) aktuális értékét egy számkijelz n.őJelenítsük meg a csúszka (slider) aktuális értékét egy számkijelz n.ő

Visual C++ / MFC Kdevelop / Qt

// Generated message map functions //{{AFX_MSG(CSliderDlg) . . . afx_msg void OnReleasedcaptureSlider(NMHDR* pNMHDR, LRESULT* pResult); //}}AFX_MSG DECLARE_MESSAGE_MAP()

SliderDlg.hSliderDlg.h

BEGIN_MESSAGE_MAP(CSliderDlg, CDialog) //{{AFX_MSG_MAP(CSliderDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SLIDER, OnReleasedcaptureSlider) //}}AFX_MSG_MAP END_MESSAGE_MAP()

Void CSliderDlg::OnReleasedcaptureSlider(NMHDR* pNMHDR, LRESULT* pResult) { // TODO: Add your control notification handler code here m_lcd = m_slider.GetPos(); UpdateData(FALSE); *pResult = 0;

}

SliderDlg.cppSliderDlg.cpp

SliderDlg.cppSliderDlg.cpp

Üzenet MetódusReleasedcapture OnReleasedcaptureSlider

Void CsliderDlg::OnReleasedcaptureSlider(...)

Üzenetkezel őÜzenetkezel őmetódusmetódus

Üzenet táblaÜzenet tábla

Slider mozgatás 1

SliderDlgCallback mechanizmusCallback mechanizmusCallback mechanizmusCallback mechanizmusCallback mechanizmusCallback mechanizmusCallback mechanizmusCallback mechanizmusCallback mechanizmusCallback mechanizmus

Üzenet MetódusReleasedcapture OnReleasedcaptureSlider

Void CsliderDlg::OnReleasedcaptureSlider(...)

ÜzenetkezelőÜzenetkezelőmetódusmetódus

Üzenet táblaÜzenet tábla

Slider mozgatás

Üzenet

1

2

SliderDlg

Callback mechanizmusCallback mechanizmusCallback mechanizmusCallback mechanizmusCallback mechanizmusCallback mechanizmusCallback mechanizmusCallback mechanizmusCallback mechanizmusCallback mechanizmus

Üzenet MetódusReleasedcapture OnReleasedcaptureSlider

Void CsliderDlg::OnReleasedcaptureSlider(...)

ÜzenetkezelőÜzenetkezelőmetódusmetódus

Üzenet táblaÜzenet tábla

Slider mozgatás

Üzenet

Üzenetkezel behívásaő3

1

2

SliderDlg

Callback mechanizmusCallback mechanizmusCallback mechanizmusCallback mechanizmusCallback mechanizmusCallback mechanizmusCallback mechanizmusCallback mechanizmusCallback mechanizmusCallback mechanizmus

Üzenet MetódusReleasedcapture OnReleasedcaptureSlider

Void CsliderDlg::OnReleasedcaptureSlider(...)

ÜzenetkezelőÜzenetkezelőmetódusmetódus

Üzenet táblaÜzenet tábla

Slider mozgatás

Üzenet

Üzenetkezel behívásaő

Érték lekérdezése

3

1

2

4

SliderDlg

Callback mechanizmusCallback mechanizmusCallback mechanizmusCallback mechanizmusCallback mechanizmusCallback mechanizmusCallback mechanizmusCallback mechanizmusCallback mechanizmusCallback mechanizmus

Üzenet MetódusReleasedcapture OnReleasedcaptureSlider

Void CsliderDlg::OnReleasedcaptureSlider(...)

ÜzenetkezelőÜzenetkezelőmetódusmetódus

Üzenet táblaÜzenet tábla

Slider mozgatás

Üzenet

Üzenetkezel behívásaő

Érték lekérdezése Kijelz beállításaő

3

1

2

4 5

SliderDlg

Callback mechanizmusCallback mechanizmusCallback mechanizmusCallback mechanizmusCallback mechanizmusCallback mechanizmusCallback mechanizmusCallback mechanizmusCallback mechanizmusCallback mechanizmus

Slotok SignálokSlotokSignálok

ValueChanged(int) Display(int)

A slider értékváltozás esetén valueChanged(int) szignált küld. A slider értékváltozás esetén valueChanged(int) szignált küld. Ezt a szignált hozzákötjük a számkijelz display (int) slotjához ő Ezt a szignált hozzákötjük a számkijelz display (int) slotjához ő

(speciálisan kezelt m veletéhez).ű(speciálisan kezelt m veletéhez).ű

Signal / slot mechanizmusSignal / slot mechanizmusSignal / slot mechanizmusSignal / slot mechanizmusSignal / slot mechanizmusSignal / slot mechanizmusSignal / slot mechanizmusSignal / slot mechanizmusSignal / slot mechanizmusSignal / slot mechanizmus

Slotok SignálokSlotokSignálok

ValueChanged(int) Display(int)

Signal / slot mechanizmusSignal / slot mechanizmusSignal / slot mechanizmusSignal / slot mechanizmusSignal / slot mechanizmusSignal / slot mechanizmusSignal / slot mechanizmusSignal / slot mechanizmusSignal / slot mechanizmusSignal / slot mechanizmus

connect( ansGroup, SIGNAL( clicked(int) ), this, SLOT( checkAnswer(int) ) );

Grafikus tervező

Qt

Programfejlesztő

(Kdevelop)

Program

Kinek a módosítása érvényes?

A grafikus tervez eszköz szerepeőA grafikus tervez eszköz szerepeőA grafikus tervez eszköz szerepeőA grafikus tervez eszköz szerepeőA grafikus tervez eszköz szerepeőA grafikus tervez eszköz szerepeőA grafikus tervez eszköz szerepeőA grafikus tervez eszköz szerepeőA grafikus tervez eszköz szerepeőA grafikus tervez eszköz szerepeő

Qt designer

UIC form.h

form.cpp main.cpp

form.ui

Írás, olvasásOlvasásGenerálás#includesEszköz (tool)Generált forráskódFelhasználó forráskódja

A .ui fájl és a generált kódA .ui fájl és a generált kódA .ui fájl és a generált kódA .ui fájl és a generált kódA .ui fájl és a generált kódA .ui fájl és a generált kódA .ui fájl és a generált kódA .ui fájl és a generált kódA .ui fájl és a generált kódA .ui fájl és a generált kód

Qt designer

UIC form.h

formbase.cpp main.cpp

formbase.ui

Írás, olvasásOlvasásGenerálás#includesEszköz (tool)Generált forráskódFelhasználó forráskódja

formbase.h

form.cpp

Örö

kldé

Névkonvenció

A .ui fájl és a generált kód – származtatásA .ui fájl és a generált kód – származtatásA .ui fájl és a generált kód – származtatásA .ui fájl és a generált kód – származtatásA .ui fájl és a generált kód – származtatásA .ui fájl és a generált kód – származtatásA .ui fájl és a generált kód – származtatásA .ui fájl és a generált kód – származtatásA .ui fájl és a generált kód – származtatásA .ui fájl és a generált kód – származtatás

Kdevelop / Qt alkalmazásKdevelop / Qt alkalmazásKdevelop / Qt alkalmazásKdevelop / Qt alkalmazásKdevelop / Qt alkalmazásKdevelop / Qt alkalmazásKdevelop / Qt alkalmazásKdevelop / Qt alkalmazásKdevelop / Qt alkalmazásKdevelop / Qt alkalmazás

Legyen Ön is milliomos!Legyen Ön is milliomos!

Gomb + képGomb + kép

Szerkeszthet őSzerkeszthet őszövegszöveg

LCD kijelzőLCD kijelző

Gomb csoportGomb csoport

Radio ButtonRadio Button

Gomb + szövegGomb + szöveg

Új projekt létrehozása – Új projekt létrehozása – Új projekt létrehozása – Új projekt létrehozása – Új projekt létrehozása – Új projekt létrehozása – Új projekt létrehozása – Új projekt létrehozása – Új projekt létrehozása – Új projekt létrehozása – Project / NewProject / NewProject / NewProject / NewProject / NewProject / NewProject / NewProject / NewProject / NewProject / New11

22

Kdevelop projekt elkészítése – Qt SDIKdevelop projekt elkészítése – Qt SDIKdevelop projekt elkészítése – Qt SDIKdevelop projekt elkészítése – Qt SDIKdevelop projekt elkészítése – Qt SDIKdevelop projekt elkészítése – Qt SDIKdevelop projekt elkészítése – Qt SDIKdevelop projekt elkészítése – Qt SDIKdevelop projekt elkészítése – Qt SDIKdevelop projekt elkészítése – Qt SDI

11

22

Az alkalmazás adataiAz alkalmazás adataiAz alkalmazás adataiAz alkalmazás adataiAz alkalmazás adataiAz alkalmazás adataiAz alkalmazás adataiAz alkalmazás adataiAz alkalmazás adataiAz alkalmazás adatai

22

33

11 Mill

Projekt generálásaProjekt generálásaProjekt generálásaProjekt generálásaProjekt generálásaProjekt generálásaProjekt generálásaProjekt generálásaProjekt generálásaProjekt generálása

A generálás A generálás normál üzenetetnormál üzenetet

Figyelmeztetések, Figyelmeztetések, hibákhibák

“Bug” kiszedése“Bug” kiszedése“Bug” kiszedése“Bug” kiszedése“Bug” kiszedése“Bug” kiszedése“Bug” kiszedése“Bug” kiszedése“Bug” kiszedése“Bug” kiszedése

Módosítani kell az Módosítani kell az acinclude.m4.inacinclude.m4.in fájlt. fájlt.

[m4_define([$1], [mm_car($2)])$3[]_mm_foreach([$1],

[m4_define([$1], mm_car($2))$3[]_mm_foreach([$1],

Módosítani kell az Módosítani kell az acinclude.m4.inacinclude.m4.in fájlt. fájlt.

Törölni kell a Törölni kell a [[ és és ]] zárójeleket. zárójeleket.

A “Switch to Qt's designer” gommbal váltsunk át Qt-re.

Grafikus elem hozzáadásaGrafikus elem hozzáadásaGrafikus elem hozzáadásaGrafikus elem hozzáadásaGrafikus elem hozzáadásaGrafikus elem hozzáadásaGrafikus elem hozzáadásaGrafikus elem hozzáadásaGrafikus elem hozzáadásaGrafikus elem hozzáadása

Qt designer - a képerny felépítéseőQt designer - a képerny felépítéseőQt designer - a képerny felépítéseőQt designer - a képerny felépítéseőQt designer - a képerny felépítéseőQt designer - a képerny felépítéseőQt designer - a képerny felépítéseőQt designer - a képerny felépítéseőQt designer - a képerny felépítéseőQt designer - a képerny felépítéseő

Fájlok

Vezérl elemekő

Tulajdonságok

Forrásszöveg, widget

Beállítás:Window/View/... Beállítás:Window/View/...

RadioButtonPushButton

ButtonGroupCheckBox Frame

TextEditLCDNumberTextLabelComboBox

LineEdit

Qt ToolbarQt ToolbarQt ToolbarQt ToolbarQt ToolbarQt ToolbarQt ToolbarQt ToolbarQt ToolbarQt Toolbar

Új widget létrehozása: Új widget létrehozása: Új widget létrehozása: Új widget létrehozása: Új widget létrehozása: Új widget létrehozása: Új widget létrehozása: Új widget létrehozása: Új widget létrehozása: Új widget létrehozása: File/New/WidgetFile/New/Widget

Ez a párbeszédablak behívható a Ez a párbeszédablak behívható a Kdevelop-ból is közvetlenül a Kdevelop-ból is közvetlenül a

File/New paranccsal.File/New paranccsal.

Párbeszédablak – Párbeszédablak – Párbeszédablak – Párbeszédablak – Párbeszédablak – Párbeszédablak – Párbeszédablak – Párbeszédablak – Párbeszédablak – Párbeszédablak – name, captionname, caption

File/Save as ...File/Save as ...File/Save as ...File/Save as ...File/Save as ...File/Save as ...File/Save as ...File/Save as ...File/Save as ...File/Save as ...

Fogadjuk el a widget nevéb l származtatott ő

file nevet.

Szövegdoboz elhelyezéseSzövegdoboz elhelyezéseSzövegdoboz elhelyezéseSzövegdoboz elhelyezéseSzövegdoboz elhelyezéseSzövegdoboz elhelyezéseSzövegdoboz elhelyezéseSzövegdoboz elhelyezéseSzövegdoboz elhelyezéseSzövegdoboz elhelyezése A Qt eszköztárából válasszuk ki A Qt eszköztárából válasszuk ki a a TextEdit TextEdit eszközteszközt

Kattintsunk a szövegdoboz Kattintsunk a szövegdoboz tervezett helyére.tervezett helyére.

11

22

Pixmap gomb elhelyezésePixmap gomb elhelyezésePixmap gomb elhelyezésePixmap gomb elhelyezésePixmap gomb elhelyezésePixmap gomb elhelyezésePixmap gomb elhelyezésePixmap gomb elhelyezésePixmap gomb elhelyezésePixmap gomb elhelyezésePushButtonPushButton

Kattintsunk a vezérl elem őKattintsunk a vezérl elem őtervezett helyére.tervezett helyére.

Válaszunk képet a Válaszunk képet a gomb felirata gomb felirata

helyett.helyett.

11

22

44

33

Számkijelz elhelyezéseőSzámkijelz elhelyezéseőSzámkijelz elhelyezéseőSzámkijelz elhelyezéseőSzámkijelz elhelyezéseőSzámkijelz elhelyezéseőSzámkijelz elhelyezéseőSzámkijelz elhelyezéseőSzámkijelz elhelyezéseőSzámkijelz elhelyezéseőLCDNumberLCDNumber

11

22

Távtartó (spacer) elhelyezéseTávtartó (spacer) elhelyezéseTávtartó (spacer) elhelyezéseTávtartó (spacer) elhelyezéseTávtartó (spacer) elhelyezéseTávtartó (spacer) elhelyezéseTávtartó (spacer) elhelyezéseTávtartó (spacer) elhelyezéseTávtartó (spacer) elhelyezéseTávtartó (spacer) elhelyezése SpacerSpacer

Az endButton és az LCD kijelz őAz endButton és az LCD kijelz őközé elhelyezhetünk egy közé elhelyezhetünk egy

“távtartót”.“távtartót”.

Elrendezés szabályozásaElrendezés szabályozásaElrendezés szabályozásaElrendezés szabályozásaElrendezés szabályozásaElrendezés szabályozásaElrendezés szabályozásaElrendezés szabályozásaElrendezés szabályozásaElrendezés szabályozása

Jelöljük ki egyszerre Jelöljük ki egyszerre mindhárom elemet.mindhárom elemet.

Kattintsunk a “Lay Out Kattintsunk a “Lay Out Vertically” gombra. Vertically” gombra.

11

22

A piros keret jelzi az A piros keret jelzi az elemek összetartozásátelemek összetartozását

Ezzel a gombbal lehet Ezzel a gombbal lehet megszüntetni a csoportot. megszüntetni a csoportot.

Layout toolbarLayout toolbarLayout toolbarLayout toolbarLayout toolbarLayout toolbarLayout toolbarLayout toolbarLayout toolbarLayout toolbar

Kérdés elhelyezéseKérdés elhelyezéseKérdés elhelyezéseKérdés elhelyezéseKérdés elhelyezéseKérdés elhelyezéseKérdés elhelyezéseKérdés elhelyezéseKérdés elhelyezéseKérdés elhelyezéseTextLabelTextLabel

Válasz keret elhelyezéseVálasz keret elhelyezéseVálasz keret elhelyezéseVálasz keret elhelyezéseVálasz keret elhelyezéseVálasz keret elhelyezéseVálasz keret elhelyezéseVálasz keret elhelyezéseVálasz keret elhelyezéseVálasz keret elhelyezéseButtonGroupButtonGroup

Válaszok elhelyezése – 1Válaszok elhelyezése – 1Válaszok elhelyezése – 1Válaszok elhelyezése – 1Válaszok elhelyezése – 1Válaszok elhelyezése – 1Válaszok elhelyezése – 1Válaszok elhelyezése – 1Válaszok elhelyezése – 1Válaszok elhelyezése – 1Radio ButtonRadio Button

Válaszok elhelyezése – 2Válaszok elhelyezése – 2Válaszok elhelyezése – 2Válaszok elhelyezése – 2Válaszok elhelyezése – 2Válaszok elhelyezése – 2Válaszok elhelyezése – 2Válaszok elhelyezése – 2Válaszok elhelyezése – 2Válaszok elhelyezése – 2

A A A A A A A A A A KövetkezőKövetkező gomb elhelyezése gomb elhelyezése gomb elhelyezése gomb elhelyezése gomb elhelyezése gomb elhelyezése gomb elhelyezése gomb elhelyezése gomb elhelyezése gomb elhelyezése

Grid LayoutGrid LayoutGrid LayoutGrid LayoutGrid LayoutGrid LayoutGrid LayoutGrid LayoutGrid LayoutGrid Layout

Ne legyen elem Ne legyen elem kiválasztva.kiválasztva.

A szabályos elrendezéshez kattintson a A szabályos elrendezéshez kattintson a “Lay Out in a Grid” gombra “Lay Out in a Grid” gombra

“Viselkedés” tesztelése – Ctrl T“Viselkedés” tesztelése – Ctrl T“Viselkedés” tesztelése – Ctrl T“Viselkedés” tesztelése – Ctrl T“Viselkedés” tesztelése – Ctrl T“Viselkedés” tesztelése – Ctrl T“Viselkedés” tesztelése – Ctrl T“Viselkedés” tesztelése – Ctrl T“Viselkedés” tesztelése – Ctrl T“Viselkedés” tesztelése – Ctrl T

Itt léphet ki a Itt léphet ki a tesztelésb l.őtesztelésb l.ő

?

A szövegek elrendezése A szövegek elrendezése változik az ablak méretével. változik az ablak méretével.

A .ui file mentéseA .ui file mentéseA .ui file mentéseA .ui file mentéseA .ui file mentéseA .ui file mentéseA .ui file mentéseA .ui file mentéseA .ui file mentéseA .ui file mentése

A .ui file beillesztése a Kdevelop projektbeA .ui file beillesztése a Kdevelop projektbeA .ui file beillesztése a Kdevelop projektbeA .ui file beillesztése a Kdevelop projektbeA .ui file beillesztése a Kdevelop projektbeA .ui file beillesztése a Kdevelop projektbeA .ui file beillesztése a Kdevelop projektbeA .ui file beillesztése a Kdevelop projektbeA .ui file beillesztése a Kdevelop projektbeA .ui file beillesztése a Kdevelop projektbe

.ui -> XML.ui -> XML.ui -> XML.ui -> XML.ui -> XML.ui -> XML.ui -> XML.ui -> XML.ui -> XML.ui -> XML

main.cpp program hozzáadásamain.cpp program hozzáadásamain.cpp program hozzáadásamain.cpp program hozzáadásamain.cpp program hozzáadásamain.cpp program hozzáadásamain.cpp program hozzáadásamain.cpp program hozzáadásamain.cpp program hozzáadásamain.cpp program hozzáadása

Kdevelop – main.cpp Kdevelop – main.cpp Kdevelop – main.cpp Kdevelop – main.cpp Kdevelop – main.cpp Kdevelop – main.cpp Kdevelop – main.cpp Kdevelop – main.cpp Kdevelop – main.cpp Kdevelop – main.cpp

Gépeljük be a forrásprogramot.Gépeljük be a forrásprogramot.

main.cpp main.cpp main.cpp main.cpp main.cpp main.cpp main.cpp main.cpp main.cpp main.cpp

#include <qapplication.h>#include "millmainbase.h"

int main( int argc, char ** argv ){ QApplication a( argc, argv );

MillMainBase *w = new MillMainBase;

w->show();

a.connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) );

return a.exec();}

6

5

4

3

1

2

Fordítás – FuttatásFordítás – FuttatásFordítás – FuttatásFordítás – FuttatásFordítás – FuttatásFordítás – FuttatásFordítás – FuttatásFordítás – FuttatásFordítás – FuttatásFordítás – Futtatás

��� � � ��� � � �� � � � � � �� �� � � � � ���� � � � � � � �� � � � � � �� � � � � � ���� � � � � � � �� � � � � � �� � � � � � ���� � � � � � � �� � � � � � �� � � � � � ���� � � ��� � � �� � � � � � �� �� � � � � ���� � � � � � � �� � � � � � �� � � � � � ���� � � � � � � �� � � � � � �� � � � � � ���� � � ��� � � �� � � � � � �� �� � � � � ���� � � � � � � �� � � � � � �� � � � � � ���� � � ��� � � �� � � � � � �� �� � � � � �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( newQuestion() ) ); connect( ansGroup, SIGNAL( clicked(int) ), this, SLOT( checkAnswer(int) ) ); connect( endButton, SIGNAL( clicked() ), this, SLOT( endGame() ) );

Kapcsolatépítés Qt-benKapcsolatépítés Qt-benKapcsolatépítés Qt-benKapcsolatépítés Qt-benKapcsolatépítés Qt-benKapcsolatépítés Qt-benKapcsolatépítés Qt-benKapcsolatépítés Qt-benKapcsolatépítés Qt-benKapcsolatépítés Qt-benConnect Signal/Slots (F3)

1. Kattint

2. Húz

3. Elenged

2211

66

55

44

33

22

Edit ConnectionEdit ConnectionEdit ConnectionEdit ConnectionEdit ConnectionEdit ConnectionEdit ConnectionEdit ConnectionEdit ConnectionEdit Connection

Felhasználói slot Felhasználói slot

Beépített slot Beépített slot

Ezt az ablakot el hívhatjuk az őEzt az ablakot el hívhatjuk az őEdit/Connection menüponttal is.Edit/Connection menüponttal is.

connect( nextButton, SIGNAL( clicked() ), this, SLOT( newQuestion() ) ); connect( ansGroup, SIGNAL( clicked(int) ), this, SLOT( checkAnswer(int) ) ); connect( endButton, SIGNAL( clicked() ), this, SLOT( endGame() ) );

Edit/Connections ...Edit/Connections ...Edit/Connections ...Edit/Connections ...Edit/Connections ...Edit/Connections ...Edit/Connections ...Edit/Connections ...Edit/Connections ...Edit/Connections ...

Generált header – connectionsGenerált header – connectionsGenerált header – connectionsGenerált header – connectionsGenerált header – connectionsGenerált header – connectionsGenerált header – connectionsGenerált header – connectionsGenerált header – connectionsGenerált header – connections

public slots: virtual void endGame(); virtual void newQuestion(); virtual void checkAnswer(int);

Millmainbase.hMillmainbase.h

Generált forráskód – connections ...Generált forráskód – connections ...Generált forráskód – connections ...Generált forráskód – connections ...Generált forráskód – connections ...Generált forráskód – connections ...Generált forráskód – connections ...Generált forráskód – connections ...Generált forráskód – connections ...Generált forráskód – connections ...

void MillMainBase::endGame(){ qWarning( "MillMainBase::endGame(): Not implemented yet!" );}void MillMainBase::newQuestion(){ qWarning( "MillMainBase::newQuestion(): Not implemented yet!" );}

void MillMainBase::checkAnswer(int){ qWarning( "MillMainBase::checkAnswer(int): Not implemented yet!" );}

#include "millmainbase.moc"

Fordítás/ FuttatásFordítás/ FuttatásFordítás/ FuttatásFordítás/ FuttatásFordítás/ FuttatásFordítás/ FuttatásFordítás/ FuttatásFordítás/ FuttatásFordítás/ FuttatásFordítás/ Futtatás

Projektkészítés “kézzel”Projektkészítés “kézzel”Projektkészítés “kézzel”Projektkészítés “kézzel”Projektkészítés “kézzel”Projektkészítés “kézzel”Projektkészítés “kézzel”Projektkészítés “kézzel”Projektkészítés “kézzel”Projektkészítés “kézzel”

mill könyvtármill könyvtár

main.cpp

millmain.cpp

millmain.h

qmake -projectqmake mill.promake./mill

“Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: main.cppmain.cpp

#include <qapplication.h>#include "millmain.h"

int main( int argc, char ** argv ){ QApplication a( argc, argv ); MillMain *w = new MillMain; w->show(); a.connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) ); return a.exec();}

A widget megtervezéseA widget megtervezéseA widget megtervezéseA widget megtervezéseA widget megtervezéseA widget megtervezéseA widget megtervezéseA widget megtervezéseA widget megtervezéseA widget megtervezéseCaption

QRadioButtonQRadioButtonQRadioButton

QRadioButton

QLabel

QPushButton

QLCDNumberQTextEdit

QPushButton

mainLayout

ansGroupLayout

topRightLayout

topLayout

bottomLayout

A widget megtervezéseA widget megtervezéseA widget megtervezéseA widget megtervezéseA widget megtervezéseA widget megtervezéseA widget megtervezéseA widget megtervezéseA widget megtervezéseA widget megtervezése

Caption

ans1ans4ans3

ans2

questionLabel

endButton

moneyValuetext

nextButton

“Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: millmillmain.hmain.h#ifndef MILLMAIN_H#define MILLMAIN_H#include <qwidget.h>

class QTextEdit;class QPushButton;class QButtonGroup;class QLabel;class QLCDNumber;class QRadioButton;

class MillMain : public QWidget{ Q_OBJECTpublic: MillMain( QWidget* parent = 0, const char* name = 0);. . .

. . .public slots: virtual void newQuestion(); virtual void checkAnswer(int); virtual void endGame();protected: QTextEdit* text; QPushButton* endButton; QLCDNumber* moneyValue; QLabel* questionLabel; QPushButton* nextButton; QButtonGroup* ansGroup; QRadioButton* ans1; QRadioButton* ans2; QRadioButton* ans3; QRadioButton* ans4;};#endif

“Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: millmillmain.cppmain.cpp#include "millmain.h"#include <qvariant.h>#include <qbuttongroup.h>#include <qlabel.h>#include <qlcdnumber.h>#include <qpushbutton.h>#include <qradiobutton.h>#include <qtextedit.h>#include <qlayout.h>. . . MillMain::MillMain( QWidget* parent, const char* name )

: QWidget( parent, name ){ if ( !name ) setName( "MillMain" ); setCaption( "Legyen Ön is milliomos" ); // Vezérl elemek megadása ő

// 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() ) );

}

Következ lapőKövetkez lapő

“Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: millmillmain.cppmain.cpp . . . text = new QTextEdit( this, "text" ); endButton = new QPushButton( "Vege", this, "endButton" ); nextButton = new QPushButton( "Kovetkezo", this); moneyValue = new QLCDNumber( this, "moneyValue" ); questionLabel = new QLabel( this, "questionLabel" ); questionLabel->setFrameShape( QLabel::Box ); questionLabel->setFrameShadow( QLabel::Sunken ); questionLabel->setAlignment( int( QLabel::AlignCenter ) ); questionLabel->setText("Kerdes helye");

ansGroup = new QButtonGroup( this, "ansGroup" ); ansGroup->setColumnLayout(0, Qt::Vertical ); ansGroup->layout()->setSpacing( 6 ); ansGroup->layout()->setMargin( 11 ); ansGroup->setTitle( tr("Kattintson a megfelelo valaszra!"));

ans1 = new QRadioButton( ansGroup, "ans1" ); ans2 = new QRadioButton( ansGroup, "ans2" ); ans3 = new QRadioButton( ansGroup, "ans3" ); ans4 = new QRadioButton( ansGroup, "ans4" ); . . .

Vezérl elemek őVezérl elemek őmegadásamegadása

“Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: millmillmain.cppmain.cpp . . . QGridLayout *ansGroupLayout = new QGridLayout( ansGroup->layout() ); ansGroupLayout->addWidget( ans1, 0, 0 ); ansGroupLayout->addWidget( ans2, 0, 1 ); ansGroupLayout->addWidget( ans3, 1, 0 ); ansGroupLayout->addWidget( ans4, 1, 1 ); QVBoxLayout *topRightLayout = new QVBoxLayout; topRightLayout->addWidget(endButton); topRightLayout->addStretch(1); topRightLayout->addWidget(moneyValue); QHBoxLayout *topLayout = new QHBoxLayout; topLayout->addWidget(text); topLayout->addLayout(topRightLayout); QHBoxLayout *bottomLayout = new QHBoxLayout; bottomLayout->addStretch(1); bottomLayout->addWidget(nextButton); . . .

Vezérl elemek őVezérl elemek őelrendezéseelrendezése

“Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: millmillmain.cppmain.cpp

. . . QVBoxLayout *mainLayout = new QVBoxLayout(this); mainLayout->setMargin(11); mainLayout->setSpacing(6); mainLayout->addLayout(topLayout); mainLayout->addWidget(questionLabel); mainLayout->addWidget(ansGroup); mainLayout->addLayout(bottomLayout); . . .

F vezérl elem ő őF vezérl elem ő őösszeállításaösszeállítása

“Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: “Kézi” programozás: millmillmain.cppmain.cpp

. . .//Slotsvoid MillMain::newQuestion(){ qWarning( "MillMain::newQuestion(): Not implemented yet" );}

void MillMain::checkAnswer(int){ qWarning( "MillMain::checkAnswer(int): Not implemented yet" );}

void MillMain::endGame(){ qWarning( "MillMain::endGame(): Not implemented yet" );}. . .

Eseménykezel k őEseménykezel k őel készítéseőel készítéseő

Alkalmazás készítés Qt DesignerbenAlkalmazás készítés Qt DesignerbenAlkalmazás készítés Qt DesignerbenAlkalmazás készítés Qt DesignerbenAlkalmazás készítés Qt DesignerbenAlkalmazás készítés Qt DesignerbenAlkalmazás készítés Qt DesignerbenAlkalmazás készítés Qt DesignerbenAlkalmazás készítés Qt DesignerbenAlkalmazás készítés Qt Designerben

Qt designer elindításaÚj Qt projekt létrehozásaPárbeszédablak (form) hozzáadása a projekthezVezérl elemek (ő slider, lcd) megadásamain.cpp hozzávétele a projekthezFordítás/Futtatás (parancs módban)

SOURCES += main.cppunix { UI_DIR = .ui MOC_DIR = .moc OBJECTS_DIR = .obj}FORMS = millmainbase.uiTEMPLATE =appCONFIG += qt warn_on releaseLANGUAGE = C++

mill.promill.pro

####################################################################### Automatically generated by qmake (1.04a) Sun Feb 29 18:33:02 2004######################################################################

TEMPLATE = appCONFIG -= mocINCLUDEPATH += .

# InputINTERFACES += millmainbase.uiSOURCES += main.cpp

mill.promill.pro

Vége, de ...Vége, de ...Vége, de ...Vége, de ...Vége, de ...Vége, de ...Vége, de ...Vége, de ...Vége, de ...Vége, de ...

Folyt. köv.Folyt. köv.Folyt. köv.Folyt. köv.Folyt. köv.Folyt. köv.Folyt. köv.Folyt. köv.Folyt. köv.Folyt. köv.