Difference between revisions of "Development/Tutorials/First program (fi)"

Line 67: Line 67:
 
Nyt olemme käyneet koodin läpi vaihe vaiheelta ja valmiitä kokeilemaan kääntämistä ja ohjelman suoritusta.
 
Nyt olemme käyneet koodin läpi vaihe vaiheelta ja valmiitä kokeilemaan kääntämistä ja ohjelman suoritusta.
  
==Build==
+
==Kääntäminen==
If you set up your environment as described in [[Getting Started/Build/KDE4]], you can compile this code with
+
Jos olet asettanut ohjelmointiympäristösi kuten [[Getting Started/Build/KDE4]]:ssa on neuvottu voit kääntää koodin seuraavasti:
 
   
 
   
 +
<code>
 
  g++ main.cpp -o tutorial1 \
 
  g++ main.cpp -o tutorial1 \
 
  -I$QTDIR/include/Qt \
 
  -I$QTDIR/include/Qt \
Line 78: Line 79:
 
  -L$KDEDIR/lib \
 
  -L$KDEDIR/lib \
 
  -L$QTDIR/lib -lQtCore -lQtGui -lkdeui -lkdecore
 
  -L$QTDIR/lib -lQtCore -lQtGui -lkdeui -lkdecore
and then run it with
+
</code>
 +
 
 +
Ja ohjelman käynnistys seuraavasti:
 +
<code>
 
  dbus-launch ./tutorial1
 
  dbus-launch ./tutorial1
 +
</code>
 +
 +
===CMaken käyttäminen===
 +
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ä.
  
===Using CMake===
 
If that worked, you may want to use [[Development/Tutorials/CMake|CMake]], just like the rest of KDE. This will automatically locate the libraries and headers for KDE, Qt etc. and will allow you to easily build your applications on other computers.
 
 
====CMakeLists.txt====
 
====CMakeLists.txt====
Create a file named CMakeLists.txt in the same directory as main.cpp with this content:
+
Luo CMakeLists.txt-niminen tiedosto samaan hakemistoon jossa main.cpp sijaitsee ja kopioi alla oleva koodi siihen:
 
<code ini n>
 
<code ini n>
 
project (tutorial1)
 
project (tutorial1)
Line 96: Line 102:
 
target_link_libraries(tutorial1 ${KDE4_KDEUI_LIBS})
 
target_link_libraries(tutorial1 ${KDE4_KDEUI_LIBS})
 
</code>
 
</code>
The <tt>find_package()</tt> function locates the package that you ask it for (in this case KDE4) and sets some variables describing the location of the package's headers and libraries. In this case we will use the <tt>KDE4_INCLUDES</tt> variable which contains the path to the KDE4 header files.
+
<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.
  
In order to allow the compiler to find these files, we pass that variable to the <tt>include_directories()</tt> function which adds the KDE4 headers to the header search path.
+
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.
  
Next we create a variable called <tt>tutorial1_SRCS</tt> using the <tt>set()</tt> function. In this case we simply set it to the name of our only source file.
+
Seuraavana luomme <tt>tutorial1_SRCS</tt>-nimisen muuttujan <tt>set()</tt>-funktiota apuna käyttäen. Muuttujan arvoksi tulee lähdekooditiedostomme nimi.
  
Then we use <tt>kde4_add_executable()</tt> to create an executable called <tt>tutorial1</tt> from the source files listed in our <tt>tutorial1_SRCS</tt> variable. Finally we link our executable to the KDE4 kdeui library using <tt>target_link_libraries()</tt> and the <tt>KDE4_KDEUI_LIBS</tt> variable which was set by the <tt>find_package()</tt> function.
+
<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.
  
====Make And Run====
+
====Käännös ja suoritus====
Again, if you set up your environment as described in [[Getting_Started/Build/KDE4|Getting Started/Build/KDE4]], you can compile this code with:
+
Edelleen, jos olet asettanut ohjelmointiympäristösi kuten [[Getting Started/Build/KDE4]]:ssa on neuvottu voit kääntää koodin seuraavasti:
cmakekde
+
<code>
 +
cmakekde
 +
</code>
  
Or if you did not:
+
tai ellet, niin:
 
+
<code>
mkdir build && cd build
+
mkdir build && cd build
cmake ..
+
cmake ..
make
+
make
 +
</code>
  
And launch it with:
+
Ja suoritus:
 +
<code>
 
  ./tutorial1
 
  ./tutorial1
 +
</code>
  
 
==Moving On==
 
==Moving On==

Revision as of 06:54, 10 January 2008


Development/Tutorials/First_program

Hello World
Tutorial Series   Beginner Tutorial
Previous   C++, Qt, KDE4 development environment
What's Next   Tutorial 2 - KXmlGuiWindow
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.

Introtokdetutorial1.png
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
KDevelop on erinomainen IDE kehitettäessä KDE- ja Qt C++-sovelluksia. Se sisältää integroidun debuggerin, tehokkaan editorin syntaksikorostuksella, Projektivelhon sovellusten luomiseksi mallinneista ja jopa luokkadokumentoinnit. Lisätietoja yksityiskohdista voi myös löytää KDevelop wiki sivustossa.

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:

  1. include <KApplication>
  2. include <KAboutData>
  3. include <KCmdLineArgs>
  4. 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. This needs to be done exactly once in each program since it is needed for things such as i18n.

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 tt>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

Moving On

Now you can move on to using KXmlGuiWindow.


Content is available under Creative Commons License SA 4.0 unless otherwise noted.