kØszítette: szabónØ nacsa rozÆlia bemutato.pdflegyen Ön is milliomos! gomb + kØp szerkeszthet...
TRANSCRIPT
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é
ső
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.