Development/Tutorials/First program (fi): Difference between revisions

    From KDE TechBase
    m (Text replace - "</code>" to "</syntaxhighlight>")
    m (Text replace - "<code ini n>" to "<syntaxhighlight lang="ini" line>")
    Line 91: Line 91:
    ====CMakeLists.txt====
    ====CMakeLists.txt====
    Luo CMakeLists.txt-niminen tiedosto samaan hakemistoon, jossa main.cpp sijaitsee ja kopioi alla oleva koodi siihen:
    Luo CMakeLists.txt-niminen tiedosto samaan hakemistoon, jossa main.cpp sijaitsee ja kopioi alla oleva koodi siihen:
    <code ini n>
    <syntaxhighlight lang="ini" line>
    project (tutorial1)
    project (tutorial1)



    Revision as of 21:05, 29 June 2011


    Development/Tutorials/First_program

    Perehdytys 1 - Hei Maailma!
    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ähän tarkoitukseen käytämme KMessageBox-luokkaa, ja muokkaamme yhtä painiketta.

    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, syntaksikorostuksen hallitsevan editorin, Projektivelhon sovellusten luomiseksi mallinneista ja jopa luokkadokumentoinnit. Lisätietoja yksityiskohdista voi myös löytää KDevelop wiki -sivustossa.

    Ohjeita KDevelop-ohjelman käyttämisestä KDE 4-sovellusten kanssa löydät tältä sivulta

    Kuitenkin sinun pitää edelleen muokata CMake -tiedostoja 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&auml;..
                             "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 tarvitaan tätä luokkaa.

    Seuraavana on KCmdLineArgs. Tämän luokan tarkoituksena on määritellä komentorivin argumentit, esimerkiksi, avataksesi ohjelman tietyn tiedoston kanssa. Kuitenkin tässä oppaassa me vain alustamme sen KAboutData-objektilla, jonka loimme ensimmäisessä kohdassa, jotta voimme käyttää --version tai --author kytkimiä.

    Kolmantena luomme KApplication-objektin. Tämä on tarpeellinen jokaisessa ohjelmassa, koska esim. i18n tarvitsee sitä.

    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ä painiketta mieleiseksemme. Painikkeen muokkauksessa käytämme KGuiItem-objektia. KGuiItem:n ensimmäinen parametri muodostajassa määrittelee painikkeen näytettävän tekstin. Seuraava parametri määrittelisi KGuiItem:n kuvakkeen, 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 oikeaa painiketta napsauttamalla tai Vaihto + F1 -näppäinyhdistelmällä).

    Painike on nyt valmis ja voimme tehdä pop-up-ikkunan. Me kutsumme KMessageBox::questionYesNo()-funktiota tähän tarkoitukseen, joka oletuksena luo viesti-ikkunan varustettuna "Kyllä" ja "Ei" painikkeilla. 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"-painikkeeen 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

    Jos olet asettanut ohjelmointiympäristösi, kuten oppaassa Getting Started/Build/KDE4 on neuvottu, voit kääntää koodin seuraavasti:

    cmakekde
    

    Muussa tapauksessa:

    mkdir build && cd build
    cmake ..
    make
    

    Koodi suoritetaan:

     ./tutorial1
    

    Seuraavaksi

    Seuraavaksi voit jatkaa Main-ikkunan luonti - perehdytykseen.