KDE-Programmierung

Willemers Informatik-Ecke

KDE ist ein Desktop für Linux. Er basiert auf der Qt-Library der Firma Troll Tech. Die Programmierschnittstelle (API) ist an C++ gebunden.

KDE-Makefile

Um ein KDE-Programm zu übersetzen, werden die Pfade für die include-Dateien und die Bibliotheken benötigt. Basis für das Auffinden der Verzeichnisse ist die Environmentvariable KDEDIR bzw QTDIR, die bei Installation des KDE gesetzt werden. Darunter finden sich die Verzeichnisse include für die Headerdateien und lib für die Bibliotheken. In dem folgenden kleinen Makefile sind alle Angaben enthalten, die zur Übersetzung eines Minimalprogramms notwendig ist.
INCDIR   = -I$(KDEDIR)/include -I$(QTDIR)/include
CXXFLAGS = -g -Wall $(INCDIR)
LIBDIR   = -L$(KDEDIR)/lib -L$(QTDIR)/lib -L/usr/X11R6/lib
LIBS     = -lkdeui -lkdecore -lqt -lXext -lX11

# Die wirklichen Objekte des Programms

all:	hello

%.o:	%.cpp
	gcc -c $(CXXFLAGS) -o $@ $<

hello:	hello.o
	gcc -o hello hello.o $(LIBDIR) $(LIBS)

Rahmen für ein KDE-Programm

Zwei Variablen sind für das KDE-Programm wichtig. Die Variable app als Applikationsvariable wird mit den Aufrufparametern des Programms erzeugt. Dabei wird der Konstruktor von KApplication aufgerufen. Mit dem Aufruf der Methode exec() wird das Programm gestartet und bearbeitet die Ereignisse die durch den Anwender ausgelöst werden.

Die zweite Variable ist hier vom Typ KTMainWindow und ist das Hauptfenster des Programms. Diese wird ebenfalls zu Anfang des Programmes durch den Konstruktor seiner Klasse erzeugt. Durch die Methode show() wird das Fenster sichtbar.

#include <kapp.h>
#include <ktmainwindow.h>
#include <qlabel.h>

int main(int argc, char **argv)
{
    KApplication app(argc, argv);
    KTMainWindow *top = new KTMainWindow();

    createMenu(&app, top); // siehe unten

    QLabel *text = new QLabel(i18n("Hello World"), top);

    top->setView(text);
    top->show();
    return app.exec();
}
Die Funktion createMenu ist eine eigene Funktion, die den Menübaum für das Programm erzeugt wird unter
Menüs beschrieben.

Als Inhalt des Hauptfensters wird ein Label verwendet. Ein Label ist ein Kontrollelement, das einen Text anzeigt.

Menüs

Die Klasse QPopupMenu realisiert ein Klappmenü dar, das in die Menüleiste (menubar) des Hauptfensters eingefügt wird. In die Klappmenüs werden Menüpunkte (item) mit der Methode insertItem eingefügt.
#include <kmenubar.h>
#include <qkeycode.h> // ab KDE 2.0 nicht mehr notwendig

void createMenu(KApplication *papp, KTMainWindow *top)
{
    QPopupMenu *fpop = new QPopupMenu();
    fpop->insertItem(i18n("&Quit"), papp, SLOT(quit()), CTRL + Key_X);
    // Ab KDE 2.0: Qt::CTRL + Qt::Key_X

    top->menuBar()->insertItem(i18n("&File"), fpop);

    // Der Separator sorgt dafuer, dass das Help rechts erscheint
    top->menuBar()->insertSeparator();

    // Das Helpmenue ist Standard. Es wird von der Applikation abgeleitet
    QPopupMenu *hpop = papp->getHelpMenu(TRUE,
        i18n("Hello World\na program brought to you by\nArnold Willemer"));
    top->menuBar()->insertItem(i18n("&Help"), hpop);
}

Literatur

Lehner, Burkhard: KDE- und Qt-Programmierung. Addison-Wesley, 1999.

Borkner-Delcarlo, Olaf: KDE 1.1 programmieren und anwenden. 2. Aufl., Bonn: MITP-Verlag, 1999.
Thiem, Uwe: KDE Programmierung. Poing: Franzis, 1999.

Verweise ins Internet

http://www.kde.org

Homepage (C) Copyright 1999 Arnold Willemer