Login
Newsletter
Werbung

Do, 24. Juni 1999, 00:00

KDE-Programmierung: Das Grundgerüst

Müsste man jedes Projekt komplett »von Hand« erstellen, so würde das die meisten wohl zur Verzweiflung treiben. Zum Glück gibt es aber die IDE KDevelop, mit der man ohne große Mühe die Grundstruktur für ein KDE-Programm generieren kann.

Aufbau eines KDE-Programms

Wenn Sie sich schon einmal den Quellcode eines KDE-Programms näher angeschaut haben, haben Sie sicher schon festgestellt, dass er aus verhältnismäßig vielen Dateien und Verszeichnissen besteht. Der tatsächliche Quellcode liegt im Unterverzeichnis Programmname oder src. Die anderen Dateien dienen der Projektverwaltung und werden nur benötigt, um das Programm zu kompilieren. Das liegt darin begründet, dass die GNU-Tools autoconf und automake zur Projektverwaltung verwendet werden. Ihr Vorteil gegenüber einfachen Makefiles besteht darin, dass man ein und den selben Quellcode auf verschiedenen UNIX-Derivaten (Linux, FreeBSD, OpenBSD, Solaris usw.) kompilieren kann.

Müsste man so ein Projekt komplett »von Hand« erstellen, so würde das die meisten von uns (mich eingeschlossen) wohl zur Verzweiflung treiben. Zum Glück gibt es aber die IDE KDevelop, mit der man ohne große Mühe die Grundstruktur für ein KDE-Programm generieren kann.

Und so beginnt es

Zuerst laden Sie das Programm KDevelop herunter und installieren es. Wenn Sie nun das Panel neu starten, finden Sie es im »K«-Menü unter »Anwendungen«. Starten Sie es. Um nun ein Projekt zu erzeugen, starten Sie über ProjektKAppWizard den »KDE Application Wizard«. Als Applikationstyp wählen Sie »KDE-Mini-Applikation«. Auf der nächsten Seite geben Sie als Projektname Word2HTML an. Das war es eigentlich auch schon. Sie müssen nun nur noch auf Erzeugen klicken und schon haben Sie das Grundgerüst für ein KDE-Programm.

Da kdevelop sich noch in einem frühen Alphastadium befindet, ist der Code, den es generiert, noch nicht ganz perfekt. Außerdem kann er sich in künftigen Versionen von kdevelop noch ändern. Deshalb werden wir die Quelldateien einfach austauschen. Dazu laden Sie die Quellen unseres Projektes herunter und entpacken sie in ein eigenes Verzeichnis. Falls Sie kdevelop beendet haben, starten Sie es wieder und öffnen Sie die Projektdatei von word2html. Wenn Sie nun im linken Frame des Hauptfensters auf der TabBar »LFV« auswählen, bekommen Sie eine Ansicht aller Dateien, aus denen ihr Projekt besteht. Nun klicken Sie den Eintrag word2htmlword2html.h mit der rechten Maustaste an und wählen Datei löschen. Dasselbe machen Sie auch mit den Einträgen für main.cpp und word2html.cpp. Jetzt haben Sie die von kdevelop erzeugten Quellen aus ihrem Projekt entfernt. Um nun die neuen Quellen in das Projekt aufzunehmen, wählen Sie ProjektDatei(en) hinzufügenVorhandene Datei(in).... Wählen Sie die drei Dateien, die Sie vorher entpackt haben, aus und klicken Sie auf OK. Das war's auch schon.

Wenn Sie jetzt die Tastenkombination »STRG F9« drücken, wird ihr Programm kompiliert und ausgeführt. Sie bekommen nun ein leeres Fenster zu sehen, das wir in den nächsten Teilen dieses Workshops mit »Leben« füllen werden. Zugegeben, das ist nicht viel, aber es ist ein Anfang.

Der Code

Wirklich interessant wird es aber erst jetzt. Wir sehen uns nämlich die Quellen genauer an, aus denen dieses Projekt besteht.

/* toplevel.h */
#ifndef _TOPLEVEL_H_
#define _TOPLEVEL_H_
#include <kapp.h>
#include <ktmainwindow.h>
class TopLevel : public KTMainWindow
{
 Q_OBJECT
public:
 TopLevel();
 void closeEvent(QCloseEvent *);
};
#endif

Erklärung

#ifndef _TOPLEVEL_H_
#define _TOPLEVEL_H_

Diese zwei Direktiven an den Preprozessor verhindern, dass die folgenden Definitionen durch Include-Anweisungen in anderen Modulen im Programm mehrfach vorhanden sind. Oder einfacher ausgedrückt: Sie vermeiden Probleme beim Kompilieren.

class TopLevel : public KTMainWindow
{

Hier wird die neue Klasse TopLevel deklariert, die unser Hauptfenster wird. Sie wird von KTMainWindow, der Klasse für Hauptfenster in KDE, abgeleitet.

 Q_OBJECT

Ein Makro von Qt. Es ist für bestimmte Features von Qt wie z.B. Signale und Slots zuständig.

void closeEvent(QCloseEvent *);

Wir überschreiben eine Methode, die von KTMainWindow geerbt wurde, um auf das Schließen des Hauptfensters zu reagieren.

/* toplevel.cpp */
#include "toplevel.h"
TopLevel::TopLevel()
{
 resize(500,400);
 setCaption("Word2HTML");
}
void TopLevel::closeEvent(QCloseEvent *)
{
 kapp->quit();
}

Erklärung

TopLevel::TopLevel()
{

Der Konstruktor unserer Hauptfensterklasse. In ihm werden die Voreinstellungen des Fensters getroffen. Später werden wir dort auch Steuerelemente wie Buttons, Toolbars usw. erzeugen und positionieren.

 resize(500,400);

Legt die Größe des Fensters beim Programmstart auf 500*400 Pixel fest. Der Benutzer kann die Größe des Fensters dabei immer noch verändern. Wenn Sie erreichen wollen, dass die Größe des Fensters unveränderbar ist, verwenden Sie einfach die Methode void setFixedSize(int x, int y).

 setCaption("Word2HTML");
}

Zeigt den String "Word2HTML" in der Titelzeile des Fensters an.

void TopLevel::closeEvent(QCloseEvent *)
{
 kapp->quit();
}

Durch das Überschreiben dieser Methode erreichen wir, dass das Programm beim Schließen des Hauptfensters richtig beendet wird.

/* main.cpp */
#include <kapp.h>
#include "toplevel.h"
int main(int argc, char *argv[])
{
 KApplication app(argc, argv);
 TopLevel toplevel;
 toplevel.show();
 return app.exec();
}

Erklärung

 KApplication app(argc, argv);

Erzeugt ein Objekt der Klasse KApplication und übergibt ihm die Kommandozeilenparameter des Programms. KApplication ist die Hauptklasse eines KDE-Programms. Jedes KDE-Programm besitzt genau ein Objekt dieser Klasse.

 TopLevel toplevel;
 toplevel.show();

Hier wird nun ein Objekt der oben definierten Hauptfensterklasse TopLevel erzeugt. Da das Fenster anfangs noch unsichtbar ist, wird es über die Methode show() angezeigt.

 return app.exec();

Das Programm wird ausgeführt und sein Rückgabewert an das Betriebssystem weitergereicht.

Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung