Translate

Jump to: navigation, search
Settings

Information about the group Translation of the wiki page Development/Tutorials/First program.
Development/Tutorials/First programCurrent message text
...st program/Page display title/nlOntwikkeling/Tutorials/Uw eerste programma
...ent/Tutorials/First program/1/nlseries=Beginnerstutorial|
...ent/Tutorials/First program/2/nlname=Hallo wereld|
...ent/Tutorials/First program/3/nlpre=[http://mindview.net/Books/TICPP/ThinkingInCPP2e.html C++], [http://qt.nokia.com Qt], [[Getting_Started/Build|KDE compileren]]|
...ent/Tutorials/First program/4/nlnext=[[Development/Tutorials/Using_KXmlGuiWindow|Tutorial 2 - KXmlGuiWindow]]|
...ent/Tutorials/First program/5/nlreading=[[Development/Tutorials/CMake|CMake]]
}}
...ent/Tutorials/First program/6/nl==Samenvatting==
...ent/Tutorials/First program/7/nlWat zou je eerste programma anders moeten doen dan de wereld begroeten? Om dat voor elkaar te krijgen, gebruiken we een {{class|KMessageBox}} en passen we één van de knoppen aan. [[image:introtokdetutorial1.png|frame|center]]
...ent/Tutorials/First program/8/nl{{Tip|Als je meer informatie wilt over een klasse die je tegenkomt, kun je de 'kde'-zoekmachine gebruiken. Om bijvoorbeeld meer te weten te komen over een KMessageBox, typ je "kde:kmessagebox" in Konqueror, rekonq of KRunner, waarna de documentatie verschijnt.}}
...ent/Tutorials/First program/9/nl{{Tip|
Als IDE voor je projecten kun je [[qtcreator|QtCreator]] gebruiken.
}}
...nt/Tutorials/First program/10/nl== De code ==
...nt/Tutorials/First program/11/nlAlle code die we nodig hebben, komt in één bestand te staan: <tt>main.cpp</tt>. Maak dat bestand en zet de volgende code erin:
<syntaxhighlight lang="cpp-qt">
#include <cstdlib>
...nt/Tutorials/First program/12/nl#include <KApplication>
#include <KAboutData>
#include <KCmdLineArgs>
#include <KMessageBox>
#include <KLocale>
...nt/Tutorials/First program/13/nlint main (int argc, char *argv[])
{
   KAboutData aboutData(
                         // De programmanaam die we intern gebruiken.
                         "tutorial1",
                         // De naam van de berichtencatalogus.
                         // Als dit null is, wordt de programmanaam gebruikt.
                         0,
                         // De programmanaam zoals de gebruiker die te zien krijgt.
                         ki18n("Tutorial 1"),
                         // String die de programmaversie aangeeft.
                         "1.0",
                         // Een korte beschrijving van wat het programma doet.
                         ki18n("Displays a KMessageBox popup"),
                         // De licentie van de code.
                         KAboutData::License_GPL,
                         // Copyright-informatie.
                         ki18n("(c) 2007"),
                         // Optionele tekst die wordt weergegeven in het Info-venster.
                         // Dit kan alle informatie bevatten die je maar wilt.
                         ki18n("Some text..."),
                         // De website van het programma.
                         "http://example.com/",
                         // Het e-mailadres om bugs naartoe te sturen.
                         "submit@bugs.kde.org");
...nt/Tutorials/First program/14/nlKCmdLineArgs::init( argc, argv, &aboutData );
   KApplication app;
   KGuiItem yesButton( i18n( "Hello" ), QString(),
                       i18n( "This is a tooltip" ),
                       i18n( "This is a WhatsThis help text." ) );
   return 
       KMessageBox ::questionYesNo 
       (0, i18n( "Hello World" ), i18n( "Hello" ), yesButton ) 
       == KMessageBox ::Yes? EXIT_SUCCESS: EXIT_FAILURE;
}
</syntaxhighlight>
De eerste KDE-specifieke code die we tegenkomen is {{class|KAboutData}}. Deze klasse bevat informatie over het programma, zoals een korte beschrijving, de auteurs of licentie-informatie. Bijna ieder KDE-programma heeft deze klasse nodig.
...nt/Tutorials/First program/15/nlDan komen we bij de {{class|KCmdLineArgs}}. Deze klasse wordt gebruikt om opdrachtprompt-opties aan te geven, bijvoorbeeld om het programma te openen met een bepaald bestand. In deze tutorial echter initialiseren we het met het {{class|KAboutData}}-object dat we gemaakt hebben, zodat we de opties <tt>--version</tt> en <tt>--author</tt> kunnen gebruiken.
...nt/Tutorials/First program/16/nlDaarna maken we een {{class|KApplication}} aan. Dit moet in een programma precies één keer gedaan worden, want het wordt gebruikt voor dingen als [[Development/Tutorials/Localization/i18n|vertalingen]].
...nt/Tutorials/First program/17/nlWe zijn nu klaar met alle nodige KDE-instellingen, en we kunnen verdergaan met interessantere dingen. We maken een popup, maar daarbij passen we één van de knoppen aan. Om deze wijziging aan te brengen, moeten we een {{class|KGuiItem}}-object gebruiken. Het eerste argument in de constructor van {{class|KGuiItem}} is de tekst die op het item komt te staan (in ons geval dus de knop). Dan hebben we een optie om een icoontje op de knop te zetten; dat willen we niet en dus geven we alleen een <tt>QString()</tt> mee. Dan stellen we de tooltip in (de tekst die verschijnt als je met de muis boven een item hangt) en ten slotte de "Wat is dit?"-tekst (die je krijgt door met de rechtermuisknop te klikken of op Shift-F1 te drukken).
...nt/Tutorials/First program/18/nlWe hebben nu een item, en nu kunnen we de popup aanmaken. We roepen de functie <tt>{{class|KMessageBox}}::questionYesNo()</tt> aan, die een venster met een "Ja"- en een "Nee"-knop maakt. Het tweede argument is de tekst die verschijnt in het venster, boven de knoppen. Het derde is de venstertitel, en ten slotte stellen we als KGuiItem de aangemaakte <tt>KGuiItem yesButton</tt> in voor de (oorspronkelijke) "Ja"-knop.
...nt/Tutorials/First program/19/nlMerk op dat we alle tekst die zichtbaar is voor de gebruiker door de i18n()-functie sluizen. Dat is nodig om de interface vertaalbaar te maken. Meer informatie over vertaling kun je vinden in de tutorial over [[Development/Tutorials/Localization/i18n|vertaling]].
...nt/Tutorials/First program/20/nlWe zijn klaar met de code; laten we het programma compileren en uitproberen.
...nt/Tutorials/First program/21/nl== Compilatie ==
...nt/Tutorials/First program/22/nlJe kunt het beste [[Development/Tutorials/CMake|CMake gebruiken]] als compileeromgeving. Je maakt een bestand CMakeLists.txt, en cmake gebruikt dit bestand dan om alle Makefiles te genereren.
...nt/Tutorials/First program/23/nl=== CMakeLists.txt ===
...nt/Tutorials/First program/24/nlMaak &mdash; in dezelfde map als main.cpp &mdash; een bestand aan met de naam CMakeLists.txt, en zet het volgende erin:
<syntaxhighlight lang="cmake">
project (tutorial1)
find_package(KDE4 REQUIRED)
include (KDE4Defaults)
include_directories(${KDE4_INCLUDES})
set(tutorial1_SRCS main.cpp)
kde4_add_executable(tutorial1 ${tutorial1_SRCS})
target_link_libraries(tutorial1 ${KDE4_KDEUI_LIBS})
install(TARGETS tutorial1  ${INSTALL_TARGETS_DEFAULT_ARGS})
</syntaxhighlight>
De functie <tt>find_package()</tt> zoekt het pakket op waarnaar je vraagt (in dit geval KDE4), en stelt enkele variabelen in die de locatie van de pakketheaders en -bibliotheken aangeven. In dit geval gebruiken we de variabele <tt>KDE4_INCLUDES</tt>, die het pad bevat naar de KDE 4-headerbestanden.
...nt/Tutorials/First program/25/nlOm de compiler deze bestanden te laten vinden, geven we die variabele door aan de functie <tt>include_directories()</tt>, die de KDE 4-headers toevoegt aan het header-zoekpad.
...nt/Tutorials/First program/26/nlDaarna maken we een variabele <tt>tutorial1_SRCS</tt> met behulp van de functie <tt>set()</tt>. In dit geval stellen we de variabele in op de naam van ons enige bronbestand.
...nt/Tutorials/First program/27/nlNu gebruiken we <tt>kde4_add_executable()</tt> om een uitvoerbaar bestand te maken met de naam <tt>tutorial1</tt>, van de bronbestanden die we hadden genoemd in de variabele <tt>tutorial1_SRCS</tt>. Daarna linken we het programma tegen de kdeui-bibliotheek met <tt>target_link_libraries()</tt> en de variabele <tt>KDE4_KDEUI_LIBS</tt>, die was ingesteld door de <tt>find_package()</tt>-functie. De regel die begint met <tt>install</tt> zet een "install"-target in de Makefile.
...nt/Tutorials/First program/28/nl== Make aanroepen en uitvoeren ==
...nt/Tutorials/First program/29/nlOm het programma te compileren, linken en installeren heb je software nodig, zoals kdelibs, cmake, make en gcc-c++. Om er zeker van te zijn dat je alles hebt, kun je het beste [[Getting_Started/Build/Environment|deze installatiehandleiding]] volgen.
...nt/Tutorials/First program/30/nlJe kunt CMake en make handmatig aanroepen:
<syntaxhighlight lang="bash">
cmake . && make && make install
</syntaxhighlight>
Of je kunt &mdash; als je systeem is opgezet zoals beschreven in [[Getting_Started/Build/Environment]] &mdash; de code compileren met:
<syntaxhighlight lang="bash">
cmakekde
</syntaxhighlight>
...nt/Tutorials/First program/31/nlEn start het programma met:
<syntaxhighlight lang="bash">
./tutorial1
</syntaxhighlight>
...nt/Tutorials/First program/32/nl== De volgende stappen ==
...nt/Tutorials/First program/33/nlNu kun je verdergaan met de volgende tutorial, over het [[Development/Tutorials/Using_KXmlGuiWindow|gebruik van KXmlGuiWindow]].
...nt/Tutorials/First program/34/nl[[Category:C++]]
NavigationShowing 35 messages.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V.Legal