Development/Tutorials/Printing Hello World

From KDE TechBase
Revision as of 14:47, 5 January 2007 by Milliams (talk | contribs) (→‎With KDE 4: Add CMakeLists.txt for KDE4 (now less complicated :) ))
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

The mission

Print Hello World on your printer.

The KDE version

This code will work for KDE 3 as for KDE 4.

The code

  1. include <kprinter.h>
  2. include <qpainter.h>
  3. include <kapplication.h>
  4. include <kaboutdata.h>
  5. include <kmessagebox.h>
  6. include <kcmdlineargs.h>

/* This prints Hello World on your printer

  • /

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

       KAboutData aboutData( "test", "test",
       "1.0", "test", KAboutData::License_GPL,
       "(c) 2006" );
       KCmdLineArgs::init( argc, argv, &aboutData );
       KApplication khello;
 KPrinter job;
 job.setFullPage( true );
 if ( job.setup() )
 {
   QPainter painter;
   painter.begin( &job );
   painter.drawText(100,100,"Hello World");
   painter.end(); 
   // this makes the print job start
 }

}

Explanation

You need a KDE instance to print, because this instance stores your configuration, including your printer configuration. You create one by instanciating the KApplication class.

How to compile

With KDE 4

Quite complicated:

gcc print.cpp -o print -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 -lkdeprint

CMake

CMakeLists.txt

project (printhelloworld) find_package(KDE4 REQUIRED) include_directories( ${KDE4_INCLUDES} ) kde4_add_executable(printhelloworld main.cpp) target_link_libraries(printhelloworld ${KDE4_KDEPRINT_LIBS})

Make and Run

Then do:

cmake .
make
./printhelloworld

With KDE 3

Quite easy:

gcc printtest.cpp -o print -I/usr/lib/qt3/include -I/opt/kde3/include \
-L/opt/kde3/lib -L/usr/lib/qt3/lib  -lqt-mt -lkdeprint

See also

Tip
Note: This page deals with content related to KDE 3. If you are developing for KDE 4, this information might not be valid anymore.
Tip
Note: This page is about KDE 4. It isn't applicable for KDE 3 development.