Development/Tutorials/First program (fi): Difference between revisions
m (→Koodi) |
m (Skandit kuntoon) |
||
Line 14: | Line 14: | ||
==Lyhyesti== | ==Lyhyesti== | ||
Ensimmäisen ohjelmasi tulisi tervehtiä maailmaa "Hei Maailma!"-viestillä, vai mitä? Tätä tarkoitukseen käytämme {{class|KMessageBox}}-luokkaa, ja muokkaamme yhtä painonappia. | |||
[[image:introtokdetutorial1.png|frame|center]] | [[image:introtokdetutorial1.png|frame|center]] | ||
{{tip|Konqueror tarjoaa nopean tavan hankkia | {{tip|Konqueror tarjoaa nopean tavan hankkia lisätietoja mistä tahansa KDE:n luokasta. Esimerkiksi, jos haluat lisätietoja KMessageBox - luokasta, kirjoita Konquerorin osoitekenttään "kde:kmessagebox".}} | ||
{{tip|[http://www.kdevelop.org KDevelop] on erinomainen IDE kehitettäessä KDE- ja Qt C++-sovelluksia. Se sisältää integroidun debuggerin, tehokkaan editorin syntaksikorostuksella, ''Projektivelho''n sovellusten luomiseksi mallinneista ja jopa luokkadokumentoinnit. Lisätietoja yksityiskohdista voi myös löytää [http://kdevelop.org/mediawiki/index.php/Main_Page KDevelop wiki] sivustossa. | {{tip|[http://www.kdevelop.org KDevelop] on erinomainen IDE kehitettäessä KDE- ja Qt C++-sovelluksia. Se sisältää integroidun debuggerin, tehokkaan editorin syntaksikorostuksella, ''Projektivelho''n sovellusten luomiseksi mallinneista ja jopa luokkadokumentoinnit. Lisätietoja yksityiskohdista voi myös löytää [http://kdevelop.org/mediawiki/index.php/Main_Page KDevelop wiki] sivustossa. | ||
Line 23: | Line 23: | ||
Ohjeita siitä kuinka käyttää KDevelop-ohjelmaa KDE 4-sovellusten kanssa on saatavilla [[Getting_Started/Set_up_KDE_4_for_development#KDevelop|tällä sivulla]] | Ohjeita siitä kuinka käyttää KDevelop-ohjelmaa KDE 4-sovellusten kanssa on saatavilla [[Getting_Started/Set_up_KDE_4_for_development#KDevelop|tällä sivulla]] | ||
Silti sinun tarvitsee | Silti sinun tarvitsee vielä muokata [[Development/Tutorials/CMake_(fi)|CMake]] tiedostot käsin. | ||
}} | }} | ||
Line 36: | Line 36: | ||
int main (int argc, char *argv[]) | int main (int argc, char *argv[]) | ||
{ | { | ||
KAboutData aboutData("tutorial1", // Ohjelman nimi | KAboutData aboutData("tutorial1", // Ohjelman nimi järjestelmän käyttöön. | ||
0, // Nimi viestiluetteluun, | 0, // Nimi viestiluetteluun, käytä ohjelmannimeä jos nolla. | ||
ki18n("Tutorial 1"), // | ki18n("Tutorial 1"), // Näytettävä ohjelman nimi. | ||
"1.0", // Ohjelman versionumero. Merkkijono. | "1.0", // Ohjelman versionumero. Merkkijono. | ||
ki18n("KMessageBox popup"), // Lyhyt kuvaus | ki18n("KMessageBox popup"), // Lyhyt kuvaus siitä mitä ohjelma tekee. | ||
KAboutData::License_GPL, // Lisenssin tunniste | KAboutData::License_GPL, // Lisenssin tunniste | ||
ki18n("(c) 2007"), // | ki18n("(c) 2007"), // Tekijänoikeusmerkintä | ||
ki18n("Some text..."), // Vapaata | ki18n("Some text..."), // Vapaata tekstiä.. | ||
"http://tutorial.com", // Ohjelman kotisivu. | "http://tutorial.com", // Ohjelman kotisivu. | ||
"[email protected]"); // | "[email protected]"); // Sähköpostiosoite bugien raportoimista varten. | ||
KCmdLineArgs::init( argc, argv, &aboutData ); | KCmdLineArgs::init( argc, argv, &aboutData ); | ||
Line 55: | Line 55: | ||
} | } | ||
</code> | </code> | ||
Ensimmäinen KDE-luokka tässä ohjelmassa on {{class|KAboutData}}. Tämä luokka tallentaa ohjelman tiedot, kuten lyhyen kuvauksen, ylläpitäjätiedot, lisenssitiedot, jne. Lähestulkoon kaikissa KDE ohjelmissa tulisi olla tämä luokka. | |||
Seuraavana on {{class|KCmdLineArgs}}. | Seuraavana on {{class|KCmdLineArgs}}. Tämän luokan tarkoituksena on määritellä komentorivin argumentit, esimerkiksi, avataksesi ohjelman tietyn tiedoston kanssa. Kuitenkin, tässä perehdytyksessä, me yksinkertaisesti alustamme sen {{class|KAboutData}} objektilla, jonka ensimmäisessä kohdassa loimme, jotta voimme käyttää <tt>--version</tt> tai <tt>--author</tt> kytkimiä. | ||
Kolmantena luomme {{class|KApplication}} objektin. | Kolmantena luomme {{class|KApplication}} objektin. Tämä on tarpeellinen jokaisessa ohjelmassa, koska esim. [[Development/Tutorials/Localization/i18n|i18n]] tarvitsee {{class|KApplication}}:n. | ||
Kaikki KDE:n vaatimat asettelut on nyt tehty ja voimme | Kaikki KDE:n vaatimat asettelut on nyt tehty ja voimme siirtyä tekemään mielenkiintoisempia asioita ohjelmallemme. Seuraavana on tarkoitus luoda pop-up-ikkuna sekä muokata yhtä painonappia mieleiseksemme. Painonapin muokkauksessa käytämme {{class|KGuiItem}}-objektia. {{class|KGuiItem}}:n ensimmäinen parametri muodostajassa määrittelee painonapissa näytettävän tekstin. Seuraava parametri määrittelisi {{class|KGuiItem}}:n ikonin, joka tässä tapauksessa on jätetty tyhjäksi antamalla argumentiksi <tt>QString()</tt>(tyhjä QString). Viimeisenä asetamme käytönaikaisen vihjeen (joka näytetään kun hiiren osoitin pysähtyy hetkeksi objektin päälle) sekä "Mikä tämä on?"-selvityksen(Näytetään hiiren oikean napin klikkauksen tai Shift-F1 kautta). | ||
Painonappi on nyt valmis ja voimme luoda pop-up-ikkunan. Me kutsumme <tt>{{class|KMessageBox}}::questionYesNo()</tt>-funktiota | Painonappi on nyt valmis ja voimme luoda pop-up-ikkunan. Me kutsumme <tt>{{class|KMessageBox}}::questionYesNo()</tt>-funktiota tähän tarkoitukseen, joka oletuksena luo viesti-ikkunan varustettuna "Kyllä" ja "Ei" painonapeilla. Funktion toinen argumentti määrittelee tekstin jäka näytetään keskellä pop-up-laatikkoa. Kolmas argumentti kertoo funktiolle ikkunan nimen, ja viimeisenä kerromme että korvaamme "Yes"-painonapin luomallamme <tt>KGuiItem guiItem</tt> objektilla. | ||
Nyt olemme | Nyt olemme käyneet koodin läpi vaihe vaiheelta ja valmiitä kokeilemaan kääntämistä ja ohjelman suoritusta. | ||
== | ==Kääntäminen== | ||
Jos olet asettanut | Jos olet asettanut ohjelmointiympäristösi kuten [[Getting Started/Build/KDE4]]:ssa on neuvottu voit kääntää koodin seuraavasti: | ||
<code> | <code> | ||
Line 81: | Line 81: | ||
</code> | </code> | ||
Ja ohjelman | Ja ohjelman käynnistys seuraavasti: | ||
<code> | <code> | ||
dbus-launch ./tutorial1 | dbus-launch ./tutorial1 | ||
</code> | </code> | ||
===CMaken | ===CMaken käyttäminen=== | ||
Jos edellinen | Jos edellinen käännös onnistui, voit kokeilla [[Development/Tutorials/CMake (fi)|CMaken]] käyttöä, kuten KDE 4 ympäristössä olisi tarkoitus. CMake automaattisesti etsii KDE:n, Qt:n, yms. kirjastot ja otsikkotiedostot sekä tekee ohjelmistojesi kääntämisen helpoksi muissakin järjestelmissä. | ||
====CMakeLists.txt==== | ====CMakeLists.txt==== | ||
Line 102: | Line 102: | ||
target_link_libraries(tutorial1 ${KDE4_KDEUI_LIBS}) | target_link_libraries(tutorial1 ${KDE4_KDEUI_LIBS}) | ||
</code> | </code> | ||
<tt>find_package()</tt>-funktio etsii haluamasi paketin, | <tt>find_package()</tt>-funktio etsii haluamasi paketin, tässä tapauksessa KDE4 sekä asettaa eräitä parametrejä jotka selvittävät paketin kirjastojen ja otsikkotiedostojen sijainnin. Tässä tapauksessa käytämme <tt>KDE4_INCLUDES</tt>-muuttujaa jossa on tieto KDE4:n otsikkotiedostojen sijainnista. | ||
Jotta | Jotta kääntäjä löytäisi nämä otsikkotiedostot, annamme tämän muuttujan <tt>include_directories()</tt>-funktiolle, joka lisää KDE4 otsikkotiedostot otsikkotiedostojen etsintäpolkuun. | ||
Seuraavana luomme <tt>tutorial1_SRCS</tt>-nimisen muuttujan <tt>set()</tt>-funktiota apuna | Seuraavana luomme <tt>tutorial1_SRCS</tt>-nimisen muuttujan <tt>set()</tt>-funktiota apuna käyttäen. Muuttujan arvoksi tulee lähdekooditiedostomme nimi. | ||
<tt>kde4_add_executable()</tt>-funktiokutsun avulla luomme <tt>tutorial1</tt>-nimisen suoritettavan | <tt>kde4_add_executable()</tt>-funktiokutsun avulla luomme <tt>tutorial1</tt>-nimisen suoritettavan binäärin lähdekooditiedostoista jotka on määritelty <tt>tutorial1_SRCS</tt>-muuttujassa. Viimeisenä linkitämme suoritettavan binääritiedoston <tt>target_link_libraries()</tt>-funktiota sekä <tt>KDE4_KDEUI_LIBS</tt> muuttujia apuna käyttäen KDE4 kdeui-kirjastoon. <tt>KDE4_KDEUI_LIBS</tt> muuttuja luotiin myös <tt>find_package()</tt>-funktiossa. | ||
==== | ====Käännös ja suoritus==== | ||
Edelleen, jos olet asettanut | Edelleen, jos olet asettanut ohjelmointiympäristösi kuten [[Getting Started/Build/KDE4]]:ssa on neuvottu voit kääntää koodin seuraavasti: | ||
<code> | <code> | ||
cmakekde | cmakekde |
Revision as of 19:39, 10 January 2008
Development/Tutorials/First_program
Languages: عربي | Asturianu | Català | Česky | Kaszëbsczi | Dansk | Deutsch | English | Esperanto | Español | Eesti | فارسی | Suomi | Français | Galego | Italiano | 日本語 | 한국어 | Norwegian | Polski | Português Brasileiro | Română | Русский | Svenska | Slovenčina | Slovenščina | српски | Türkçe | Tiếng Việt | Українська | 简体中文 | 繁體中文
Tutorial Series | Beginner Tutorial |
Previous | C++, Qt, KDE4 development environment |
What's Next | Perehdytys 2 - Main-ikkunan luonti |
Further Reading | CMake |
Lyhyesti
Ensimmäisen ohjelmasi tulisi tervehtiä maailmaa "Hei Maailma!"-viestillä, vai mitä? Tätä tarkoitukseen käytämme KMessageBox-luokkaa, ja muokkaamme yhtä painonappia.
Ohjeita siitä kuinka käyttää KDevelop-ohjelmaa KDE 4-sovellusten kanssa on saatavilla tällä sivulla
Silti sinun tarvitsee vielä muokata CMake tiedostot käsin.
Koodi
Kaikki tarvittava koodi voidaan sijoittaa yhteen tiedostoon. Luo tiedosto main.cpp ja kopioi alla oleva koodi siihen:
- include <KApplication>
- include <KAboutData>
- include <KCmdLineArgs>
- include <KMessageBox>
int main (int argc, char *argv[])
{
KAboutData aboutData("tutorial1", // Ohjelman nimi järjestelmän käyttöön.
0, // Nimi viestiluetteluun, käytä ohjelmannimeä jos nolla.
ki18n("Tutorial 1"), // Näytettävä ohjelman nimi.
"1.0", // Ohjelman versionumero. Merkkijono.
ki18n("KMessageBox popup"), // Lyhyt kuvaus siitä mitä ohjelma tekee.
KAboutData::License_GPL, // Lisenssin tunniste
ki18n("(c) 2007"), // Tekijänoikeusmerkintä
ki18n("Some text..."), // Vapaata tekstiä..
"http://tutorial.com", // Ohjelman kotisivu.
"[email protected]"); // Sähköpostiosoite bugien raportoimista varten.
KCmdLineArgs::init( argc, argv, &aboutData );
KApplication app;
KGuiItem guiItem( QString( "Hello" ), QString(),
QString( "this is a tooltip" ),
QString( "this is a whatsthis" ) );
KMessageBox::questionYesNo( 0, "Hello World", "Hello", guiItem );
}
Ensimmäinen KDE-luokka tässä ohjelmassa on KAboutData. Tämä luokka tallentaa ohjelman tiedot, kuten lyhyen kuvauksen, ylläpitäjätiedot, lisenssitiedot, jne. Lähestulkoon kaikissa KDE ohjelmissa tulisi olla tämä luokka.
Seuraavana on KCmdLineArgs. Tämän luokan tarkoituksena on määritellä komentorivin argumentit, esimerkiksi, avataksesi ohjelman tietyn tiedoston kanssa. Kuitenkin, tässä perehdytyksessä, me yksinkertaisesti alustamme sen KAboutData objektilla, jonka ensimmäisessä kohdassa loimme, jotta voimme käyttää --version tai --author kytkimiä.
Kolmantena luomme KApplication objektin. Tämä on tarpeellinen jokaisessa ohjelmassa, koska esim. i18n tarvitsee KApplication:n.
Kaikki KDE:n vaatimat asettelut on nyt tehty ja voimme siirtyä tekemään mielenkiintoisempia asioita ohjelmallemme. Seuraavana on tarkoitus luoda pop-up-ikkuna sekä muokata yhtä painonappia mieleiseksemme. Painonapin muokkauksessa käytämme KGuiItem-objektia. KGuiItem:n ensimmäinen parametri muodostajassa määrittelee painonapissa näytettävän tekstin. Seuraava parametri määrittelisi KGuiItem:n ikonin, joka tässä tapauksessa on jätetty tyhjäksi antamalla argumentiksi QString()(tyhjä QString). Viimeisenä asetamme käytönaikaisen vihjeen (joka näytetään kun hiiren osoitin pysähtyy hetkeksi objektin päälle) sekä "Mikä tämä on?"-selvityksen(Näytetään hiiren oikean napin klikkauksen tai Shift-F1 kautta).
Painonappi on nyt valmis ja voimme luoda pop-up-ikkunan. Me kutsumme KMessageBox::questionYesNo()-funktiota tähän tarkoitukseen, joka oletuksena luo viesti-ikkunan varustettuna "Kyllä" ja "Ei" painonapeilla. Funktion toinen argumentti määrittelee tekstin jäka näytetään keskellä pop-up-laatikkoa. Kolmas argumentti kertoo funktiolle ikkunan nimen, ja viimeisenä kerromme että korvaamme "Yes"-painonapin luomallamme KGuiItem guiItem objektilla.
Nyt olemme käyneet koodin läpi vaihe vaiheelta ja valmiitä kokeilemaan kääntämistä ja ohjelman suoritusta.
Kääntäminen
Jos olet asettanut ohjelmointiympäristösi kuten Getting Started/Build/KDE4:ssa on neuvottu voit kääntää koodin seuraavasti:
g++ main.cpp -o tutorial1 \
-I$QTDIR/include/Qt \
-I$QTDIR/include/QtCore \
-I$QTDIR/include \
-I$KDEDIR/include/KDE \
-I$KDEDIR/include \
-L$KDEDIR/lib \
-L$QTDIR/lib -lQtCore -lQtGui -lkdeui -lkdecore
Ja ohjelman käynnistys seuraavasti:
dbus-launch ./tutorial1
CMaken käyttäminen
Jos edellinen käännös onnistui, voit kokeilla CMaken käyttöä, kuten KDE 4 ympäristössä olisi tarkoitus. CMake automaattisesti etsii KDE:n, Qt:n, yms. kirjastot ja otsikkotiedostot sekä tekee ohjelmistojesi kääntämisen helpoksi muissakin järjestelmissä.
CMakeLists.txt
Luo CMakeLists.txt-niminen tiedosto samaan hakemistoon jossa main.cpp sijaitsee ja kopioi alla oleva koodi siihen:
project (tutorial1)
find_package(KDE4 REQUIRED)
include_directories(${KDE4_INCLUDES})
set(tutorial1_SRCS main.cpp)
kde4_add_executable(tutorial1 ${tutorial1_SRCS})
target_link_libraries(tutorial1 ${KDE4_KDEUI_LIBS})
find_package()-funktio etsii haluamasi paketin, tässä tapauksessa KDE4 sekä asettaa eräitä parametrejä jotka selvittävät paketin kirjastojen ja otsikkotiedostojen sijainnin. Tässä tapauksessa käytämme KDE4_INCLUDES-muuttujaa jossa on tieto KDE4:n otsikkotiedostojen sijainnista.
Jotta kääntäjä löytäisi nämä otsikkotiedostot, annamme tämän muuttujan include_directories()-funktiolle, joka lisää KDE4 otsikkotiedostot otsikkotiedostojen etsintäpolkuun.
Seuraavana luomme tutorial1_SRCS-nimisen muuttujan set()-funktiota apuna käyttäen. Muuttujan arvoksi tulee lähdekooditiedostomme nimi.
kde4_add_executable()-funktiokutsun avulla luomme tutorial1-nimisen suoritettavan binäärin lähdekooditiedostoista jotka on määritelty tutorial1_SRCS-muuttujassa. Viimeisenä linkitämme suoritettavan binääritiedoston target_link_libraries()-funktiota sekä KDE4_KDEUI_LIBS muuttujia apuna käyttäen KDE4 kdeui-kirjastoon. KDE4_KDEUI_LIBS muuttuja luotiin myös find_package()-funktiossa.
Käännös ja suoritus
Edelleen, jos olet asettanut ohjelmointiympäristösi kuten Getting Started/Build/KDE4:ssa on neuvottu voit kääntää koodin seuraavasti:
cmakekde
tai ellet, niin:
mkdir build && cd build
cmake ..
make
Ja suoritus:
./tutorial1
Seuraavaksi
Seuraavaksi voit jatkaa Main-ikkunan luonti - perehdytykseen.