Development/Tutorials/Printing Hello World

    From KDE TechBase
    Revision as of 14:54, 5 January 2007 by Milliams (talk | contribs) (→‎How to compile: Get rid of gcc command for KDE4. Use CMake 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 and CMake

    CMakeLists.txt

    find_package(KDE4 REQUIRED) include_directories( ${KDE4_INCLUDES} ) kde4_add_executable(printhelloworld printtest.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.