Difference between revisions of "Development/Tutorials/First program"

Jump to: navigation, search
(Fit in better with the tutorial series)
Line 9: Line 9:
 
int main (int argc, char *argv[])
 
int main (int argc, char *argv[])
 
{
 
{
KAboutData aboutData( "test", "test",
+
  KAboutData aboutData( "tutorial1", "Tutorial 2",
                      "1.0", "test", KAboutData::License_GPL,
+
      "1.0", "KMessageBox popup",
                      "(c) 2006" );
+
      KAboutData::License_GPL, "(c) 2006" );
KCmdLineArgs::init( argc, argv, &aboutData );
+
  KCmdLineArgs::init( argc, argv, &aboutData );
KApplication khello;
+
  KApplication app;
KGuiItem kgi( QString( "Hello" ), QString(),
+
  KGuiItem guiItem( QString( "Hello" ), QString(),
 
               QString( "this is a tooltip" ),
 
               QString( "this is a tooltip" ),
 
               QString( "this is whatsthis" ) );
 
               QString( "this is whatsthis" ) );
  KMessageBox::questionYesNo( 0, "text", "caption", kgi );
+
  KMessageBox::questionYesNo( 0, "text", "caption", guiItem );
 
}
 
}
 
</code>
 
</code>
 
If you set up your environment as described in [[Build/Unstable Version|Build/Unstable Version]], you can compile this code with
 
If you set up your environment as described in [[Build/Unstable Version|Build/Unstable Version]], you can compile this code with
 
   
 
   
  gcc hello.cpp -o hello -I/home/kde-devel/qt-unstable/include/Qt \
+
  gcc main.cpp -o tutorial1 -I/home/kde-devel/qt-unstable/include/Qt \
 
  -I/home/kde-devel/qt-unstable/include/Qt-Core \
 
  -I/home/kde-devel/qt-unstable/include/Qt-Core \
 
  -I/home/kde-devel/qt-unstable/include -I/home/kde-devel/kde/include \
 
  -I/home/kde-devel/qt-unstable/include -I/home/kde-devel/kde/include \
Line 28: Line 28:
 
  -L/home/kde-devel/qt-unstable/lib -lkdeui -lkdecore -ldl  
 
  -L/home/kde-devel/qt-unstable/lib -lkdeui -lkdecore -ldl  
 
and then run it with  
 
and then run it with  
  ./hello
+
  ./tutorial1
  
 
If that worked, you may want to use cmake, just like the rest of KDE.
 
If that worked, you may want to use cmake, just like the rest of KDE.
Line 34: Line 34:
 
<code>
 
<code>
 
#name of the project
 
#name of the project
project (hello)
+
project (tutorial1)
  
 
#find and use the necessary libraries and headers
 
#find and use the necessary libraries and headers
Line 43: Line 43:
 
# using a variable is not really necessary:
 
# using a variable is not really necessary:
 
# using the single line  
 
# using the single line  
# kde4_add_executable(hello hello.cpp)
+
# kde4_add_executable(tutorial1 main.cpp)
 
# does the same, but when you add more stuff to the project,  
 
# does the same, but when you add more stuff to the project,  
 
# using the variable makes things a bit easier.
 
# using the variable makes things a bit easier.
set(helloSources hello.cpp)
+
set(tutorial1_SRCS hello.cpp)
kde4_add_executable(hello ${helloSources})
+
kde4_add_executable(tutorial1 ${helloSources})
  
 
# and link properly
 
# and link properly
target_link_libraries( hello ${KDE4_KDEUI_LIBS} ${KDE4_KIO_LIBS})
+
target_link_libraries(tutorial1 ${KDE4_KDEUI_LIBS})
 
</code>
 
</code>
  
 
{{KDE4}}
 
{{KDE4}}

Revision as of 18:01, 3 January 2007

Your first program shall greet the world with a friendly "hello world", what else ? For that, we will use a KMessageBox. To get more information about the KMessageBox-Class, type "kde: kmessagebox" in your konqueror and it will redirect you to http://developer.kde.org/documentation/library/cvs-api/kdelibs-apidocs/kdeui/html/classKMessageBox.html

  1. include <QString>
  2. include <kapplication.h>
  3. include <kaboutdata.h>
  4. include <kmessagebox.h>
  5. include <kcmdlineargs.h>

int main (int argc, char *argv[]) {

 KAboutData aboutData( "tutorial1", "Tutorial 2",
     "1.0", "KMessageBox popup",
     KAboutData::License_GPL, "(c) 2006" );
 KCmdLineArgs::init( argc, argv, &aboutData );
 KApplication app;
 KGuiItem guiItem( QString( "Hello" ), QString(),
              QString( "this is a tooltip" ),
              QString( "this is whatsthis" ) );
KMessageBox::questionYesNo( 0, "text", "caption", guiItem );

} If you set up your environment as described in Build/Unstable Version, you can compile this code with

gcc main.cpp -o tutorial1 -I/home/kde-devel/qt-unstable/include/Qt \
-I/home/kde-devel/qt-unstable/include/Qt-Core \
-I/home/kde-devel/qt-unstable/include -I/home/kde-devel/kde/include \
-L/home/kde-devel/kde/lib \
-L/home/kde-devel/qt-unstable/lib -lkdeui -lkdecore -ldl 

and then run it with

./tutorial1

If that worked, you may want to use cmake, just like the rest of KDE. Create a file named CMakeLists.txt with this content:

  1. name of the project

project (tutorial1)

  1. find and use the necessary libraries and headers

find_package(KDE4 REQUIRED) include_directories( ${KDE4_INCLUDES} )

  1. compile
  2. using a variable is not really necessary:
  3. using the single line
  4. kde4_add_executable(tutorial1 main.cpp)
  5. does the same, but when you add more stuff to the project,
  6. using the variable makes things a bit easier.

set(tutorial1_SRCS hello.cpp) kde4_add_executable(tutorial1 ${helloSources})

  1. and link properly

target_link_libraries(tutorial1 ${KDE4_KDEUI_LIBS})

Ktip.png
Tip
Note: This page is about KDE 4. It isn't applicable for KDE 3 development.

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