| Development/Tutorials/First program | Current message text |
|---|---|
| ↓...st program/Page display title/nl | Ontwikkeling/Tutorials/Uw eerste programma |
| ↓...ent/Tutorials/First program/1/nl | series=Beginnerstutorial| |
| ↓...ent/Tutorials/First program/2/nl | name=Hallo wereld| |
| ↓...ent/Tutorials/First program/3/nl | pre=[http://mindview.net/Books/TICPP/ThinkingInCPP2e.html C++], [http://qt.nokia.com Qt], [[Getting_Started/Build|KDE compileren]]| |
| ↓...ent/Tutorials/First program/4/nl | next=[[Development/Tutorials/Using_KXmlGuiWindow|Tutorial 2 - KXmlGuiWindow]]| |
| ↓...ent/Tutorials/First program/5/nl | reading=[[Development/Tutorials/CMake|CMake]] }} |
| ↓...ent/Tutorials/First program/6/nl | ==Samenvatting== |
| ↓...ent/Tutorials/First program/7/nl | Wat 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/nl | Alle 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/nl | int 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/nl | KCmdLineArgs::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/nl | Dan 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/nl | Daarna 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/nl | We 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/nl | We 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/nl | Merk 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/nl | We zijn klaar met de code; laten we het programma compileren en uitproberen. |
| ↓...nt/Tutorials/First program/21/nl | == Compilatie == |
| ↓...nt/Tutorials/First program/22/nl | Je 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/nl | Maak — in dezelfde map als main.cpp — 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/nl | Om 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/nl | Daarna 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/nl | Nu 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/nl | Om 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/nl | Je kunt CMake en make handmatig aanroepen: <syntaxhighlight lang="bash"> cmake . && make && make install </syntaxhighlight> Of je kunt — als je systeem is opgezet zoals beschreven in [[Getting_Started/Build/Environment]] — de code compileren met: <syntaxhighlight lang="bash"> cmakekde </syntaxhighlight> |
| ↓...nt/Tutorials/First program/31/nl | En start het programma met: <syntaxhighlight lang="bash"> ./tutorial1 </syntaxhighlight> |
| ↓...nt/Tutorials/First program/32/nl | == De volgende stappen == |
| ↓...nt/Tutorials/First program/33/nl | Nu kun je verdergaan met de volgende tutorial, over het [[Development/Tutorials/Using_KXmlGuiWindow|gebruik van KXmlGuiWindow]]. |
| ↓...nt/Tutorials/First program/34/nl | [[Category:C++]] |