Sie sind auf Seite 1von 19

Erste C++ Anwendung mit KDevelop

Rupert Wenzel
mail@ruwela.de

15. Januar 2002

Das ist ein Test

1 Start mit dem Anwendungsassistenten


In dem folgenden Beispiel erstellen wir mit KDevelop Version 2.0.2 unter Linux / KDE 2.2.2 eine
erste C++ Anwendung mit 3 Buttons, einem Textfeld zum lesen und schreiben, einer Menueleiste
und verschiedenen Message-Boxen.

Erstes Programm

Dazu starten wir KDevelop, waehlen in der Menueleiste den Eintrag Projekt -> Neu und kommen
so zu dem Anwendungsassistenten .

1
Der KDevelop Anwendungsassistent

Hier waehlen wir “KDE 2 Mini” und klicken auf “Weiter”, um in das Eingabe-Fenster fuer Projekt-
name, Version und Autor zu gelangen.

Der KDevelop Anwendungsassistent

Nachdem alle Eingaben getaetigt wurden koennen wir auf den Button “Erstellen” klicken und es
erscheint ein Fenster, in dem eine zeitlang Meldungen durchlaufen. Nach einiger Zeit sollte in der

2
letzten Zeile “READY” stehen und in dem Textfeld darunter sollten keine Fehlermeldungen stehen.

Der KDevelop Anwendungs-Assistent

Wenn wir nun den “Beenden”- Knopf druecken, beendet sich der Assistent und wir befinden uns in
der Entwicklungsumgebung.

3
2 Die Entwicklungsumgebung
Das linke Fenster der Entwicklungsumgebung zeigt baumartig die Arbeitsansichten (Dateien, Klas-
sen, Gruppen oder die Dokumentation), in dem grossen rechten Fenster wird der Quellcode oder
die Online-Hilfe angezeigt und in dem unteren Fenster werden Meldungen des Compilers und des
fertigen Programms (stdout und stderr) angezeigt. Ausserdem ist in dem unteren Fenster auch eine
Konsole enthalten.

Die Entwicklungsumgebung

In der 2. Werkzeugleiste sind zwei Auswahlboxen mit deren Hilfe man zu den Klassen und Funk-
tionen des Projektes springen kann. Momentan sind nur die Klasse “MeinErstesProgramm” in der
linken Auswahl, sowie ihr Konstruktor und Destruktor zu sehen.

Auswahl der Klassen und Funktionen

In der Arbeits-Ansicht auf der linken Seite sind die drei fuer uns wichtigen Quellcodedateien main.c
meinerstesprogramm.h und meinerstesprogramm.cpp nach Gruppen geordnet zu sehen. Wenn wir

4
nun auf den Start-Icon in der oberen Button-Leiste druecken wird aus den Quell-Code Dateien
ein ausfuehrbares Programm erstellt und gestartet. Dabei koennen wir in dem unteren Fenster Mel-
dungen des Compilers und Linkers verfolgen. Fehlermeldungen werden rot angezeigt, Warnungen
blau. Die letzte Meldung sollte “*** Erfolg *** *** Fehlercode: 0 ***” sein.

Meldungen von Compiler und Linker

Nach erfolgreicher Kompilierung startet das Programm, welches im jetzigen Zustand nur aus einem
leeren Fenster besteht, da wir ja noch keine Zeile Code geschrieben haben.

MeinErstesProgramm

5
3 Der vom Anwendungsassistenten erstellte Quellcode
3.1 main.cpp
Der folgende Code stammt aus der Datei main.c, so wie ihn der Assistent von KDevelop erstellt
hat, uns so wie wir die Datei belassen wollen.
Am Beginn sehen wir den Kommentar, dessen Inhalt (Name, E-Mail Adresse) wir im Assistenten
angegeben haben. Mit include wird der Praeprozessor angewiesen, drei Standard Headerdateien
und die Datei meinerstesprogramm.h in den Quellcode einzufuegen. Als naechstes kommen eine
Beschreibung und die Kommandozeilenparameter, welche wir aber nicht benoetigen. In Zeile 35
beginnt die Einstiegsfunktion main() mit den Kommandozeilenparametern (int argc enthaelt die
Anzahl der Parameter, char *argv[] enthaelt die Parameter selbst). Mit der Zeile
KApplication a;
wird die Anwendung erstellt, in Zeile
MeinErstesProgramm *meinerstesprogramm = new MeinErstesProgramm();
wird ein neues Objekt MeinErstesProgramm erstellt, das Fenster, das wir mit
meinerstesprogramm->show(); sichtbar machen muessen.

/***************************************************************************
main.cpp - description
-------------------
begin : Son Dez 9 22:46:17 CET 2001
copyright : (C) 2001 by Rupert Wenzel
email : ruwela@web.de
***************************************************************************/

/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/

#include <kcmdlineargs.h>
#include <kaboutdata.h>
#include <klocale.h>

#include "meinerstesprogramm.h"

static const char *description =


I18N_NOOP("MeinErstesProgramm");
// INSERT A DESCRIPTION FOR YOUR APPLICATION HERE

static KCmdLineOptions options[] =


{
{ 0, 0, 0 }
// INSERT YOUR COMMANDLINE OPTIONS HERE
};

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

6
{

KAboutData aboutData( "meinerstesprogramm", I18N_NOOP("MeinErstesProgramm"),


VERSION, description, KAboutData::License_GPL,
"(c) 2001, Rupert Wenzel", 0, 0, "ruwela@web.de");
aboutData.addAuthor("Rupert Wenzel",0, "ruwela@web.de");
KCmdLineArgs::init( argc, argv, &aboutData );
KCmdLineArgs::addCmdLineOptions( options ); // Add our own options.

KApplication a;
MeinErstesProgramm *meinerstesprogramm = new MeinErstesProgramm();
a.setMainWidget(meinerstesprogramm);
meinerstesprogramm->show();

return a.exec();
}

3.2 meinerstesprogramm.h
Die folgende Datei meinerstesprogramm.h wurde auch vom KDevelop-Wizzard erzeugt und ist die
Headerdatei zu der Klasse MeinErstesProgramm welche von QWidget abeleitet wird. Das Makro
Q_OBJECT ermoeglicht das Signal/Slot-Konzept von QT. Anschliessend erfolgt die Definition von
Konstruktor und Destruktor.

/***************************************************************************
meinerstesprogramm.h - description
-------------------
begin : Son Dez 9 22:46:17 CET 2001
copyright : (C) 2001 by Rupert Wenzel
email : ruwela@web.de
***************************************************************************/

/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/

#ifndef MEINERSTESPROGRAMM_H
#define MEINERSTESPROGRAMM_H

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#include <kapp.h>
#include <qwidget.h>

/** MeinErstesProgramm is the base class of the project */


class MeinErstesProgramm : public QWidget
{

7
Q_OBJECT
public:
/** construtor */
MeinErstesProgramm(QWidget* parent=0, const char *name=0);
/** destructor */
~MeinErstesProgramm();
};

#endif

3.3 meinerstesprogramm.cpp
Die von KDevelop erzeugte Datei meinerstesprogramm.cpp beinhaltet den noch leeren Konstruktor
bzw. Destruktor. Im Konstruktor werden spaeter die Widgets erstellt.

/***************************************************************************
meinerstesprogramm.cpp - description
-------------------
begin : Son Dez 9 22:46:17 CET 2001
copyright : (C) 2001 by Rupert Wenzel
email : ruwela@web.de
***************************************************************************/

/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/

#include "meinerstesprogramm.h"

MeinErstesProgramm::MeinErstesProgramm(QWidget *parent, const char *name)


: QWidget(parent, name)
{
}

MeinErstesProgramm::~MeinErstesProgramm()
{
}

8
4 Unser Quell-Code
4.1 Haupt Fenster
Als erstes wollen wir die Groesse und Position des Fensters festlegen. Dazu fuegen wir zwischen
die geschweiften Klammern des Konstruktor in der Datei meinerstesprogramm.cpp folgende Zeilen
ein. Da wir mit setMinimumSize und setMaximumSize die gleichen Werte zugewiesen haben, laesst
sich die Fenstergroesse nicht veraendern. (Der Quellcode des fertigen Programms findet sich am
Ende des Dokuments).
// Fenstergroesse einschraenken (Breite , Hoehe)
setMinimumSize( 160, 200 );
setMaximumSize( 160, 200 );

// Fensterposition: 100=Abstand linker Rand,


// 200=Abstand von oben
// Fenstergroesse: 160=Breite, 140=Hoehe
this->setGeometry(100, 200, 160, 210 );

Um dem Fenster eine eigene Ueberschrift zu geben, fuegen wir die folgende Zeile ein:
// Fenstertitel festlegen
setCaption("Programm");

Da wir auf Funktionen eins Objekts der aktuellen Klasse zugreifen, brauchen wir keinen Objektna-
men, wir koennten aber statt dessen den this Zeiger verwenden.
this->setCaption("Programm");

4.2 Buttons
Nun wollen wir die Buttons erstellen. Dazu fuegen wir in die Datei meinerstesprogramm.h die
Header-Datei qpushbutton.h mit folgender Zeile ein:
#include <qpushbutton.h>

Wir muessen nun fuer jeden Button einen Zeiger der Klasse QPushButton definieren. Da wir auf die
Buttons nur aus unserer Klasse MeinErstesProgramm zugreifen, koennen wir sie mit dem Schlues-
selwort private definieren:
private:
QPushButton *EndeKnopf; // Zeiger fuer Ende-Knopf erstellen
QPushButton *MachWasKnopf; // Zeiger fuer MachWas-Knopf erstellen
QPushButton *MessageKnopf; // Zeiger fuer Message-Knopf erstellen

In der Datei meinerstesprogramm.cpp werden nun die drei Objekte erstellt. Das erste Wort der Zeile
z.B. “MachWasKnopf” ist der Name des neuen Objekts, mit dem Schluesselwort new wird Spei-
cher fuer ein Objekt QPushButton bereitgestellt. Der String “Mach Was” ist der Text auf dem neuem
Button, das & Zeichen unterstreicht M und definiert es somit als Shortcut. Mit dem this Zeiger wird
festgelegt, dass sich der Button auf dem Objekt der Klasse MeinErstesProgramm (unser Fenster)

9
befinden soll.
// 3 Buttons erzeugen
EndeKnopf = new QPushButton( "&Ende",this);
MachWasKnopf = new QPushButton( "&Mach Was", this);
MessageKnopf = new QPushButton( "Message&Box", this);

Wenn wir nun das Programm mit dem Start-Icon in der Button-Leiste starten, werden wir nur
einen Button sehen, da sich alle drei Objekte in der gleichen Ecke links oben befinden. Diese gilt
es nun zu plazieren:
// Widgets plazieren
// Name->setGeometry( linker Abstand , oberer Abstand , Breite , Hoehe )
MachWasKnopf->setGeometry(20,40,120,30);
EndeKnopf->setGeometry(20,80,120,30);
MessageKnopf->setGeometry(20,120,120,30);

4.3 Das Textfeld


Nach einem erneuten Startversuch sehen wir unsere Buttons bereits richtig positioniert. Nun benoe-
tigen wir noch das Textfeld der Klasse QLineEdit. Auch hierfuer benoetigen wir in meinerstespro-
gramm.h eine Header-Datei:
#include <qlineedit.h>

Fuer unser Textfeld hier die Definition eines Zeigers vom Typ QLineEdit, die im Gegensatz zu den
Buttons public erfolgen muss, damit wir auf das Objekt zugreifen koennen:
public:
QLineEdit *TextFeld; // Zeiger fuer Textfeld

In der Datei meinerstesprogramm.cpp konnen wir nun das Textfeld erstellen:


// 1 Textfeld erzeugen
TextFeld = new QLineEdit ( this );
TextFeld->setGeometry(20,160,120,30);

4.4 Mit connect die Widgets mit Funktionen verbinden


Um nun unseren schoenen, aber immer noch nutzlosen Buttons eine Funktion zu geben, muessen
wir mit der connect Funktion die click() Signale der Buttons mit Slots verbinden. Beim EndeKnopf
Button koennen wir ueber den Pointer qApp auf den quit() SLOT unserer Anwendung zugreifen:
// Verbindung des Click-Events mit den Slots
connect( EndeKnopf, SIGNAL(clicked()), qApp, SLOT(quit()) );

Fuer die beiden anderen Buttons MachWasKnopf und MessageKnopf muessen wir zwei Slots in
unsere Klasse MeinErstesProgramm einfuegen. Dazu muessen wir in der Headerdatei meinerstes-

10
programm.h die Slots mit public definieren:
public slots:
void MySlotMachWas(); // Slot fuer MachWas Knopf erstellen
void MySlotMessage(); // Slot fuer Message Knopf erstellen

In der Datei meinerstesprogramm.cpp erstellen wir die Slots, die in etwa normalen Funktionen ent-
sprechen. Dazu muessen wir in die Datei ganz unten (nach dem Destruktor) folgenden Code fuer
den Slot MySlotMachWas einfuegen:
void MeinErstesProgramm::MySlotMachWas()
{
// Schreibe in das Textfeld "Hallo Welt"
TextFeld->setText("Hallo Welt");

// Schreibe in die Standardausgabe "Hallo Welt"


cout << "Hallo Welt\n" ;
}

Der Code des Slots MySlotMessage ist etwas laenger, da hier mehrere MessageBoxen verwendet
werden:

void MeinErstesProgramm::MySlotMessage()
{

// MessageBox mit Critical Icon, 3 Knoepfen "Button 0 \n


// OK", "Button 1\n Escape", "Button 2" Knopf 0 ist Default Knopf 1 ist Escape
// Die Messagebox zeigt den Text im Textfeld ‘‘TextFeld’’ steht
// dieser wird mit TextFeld->text() ausgelesen

switch( QMessageBox::information( this,"Ueberschrift",


TextFeld->text(), // Textfeld auslesen
"Button 0 \n OK",
"Button 1\n Escape",
"Button 2",0,1))

{
case 0: // Knopf 0 wurde gedrueckt
// Eine neue MessageBox mit dem Ergebnis
QMessageBox::information(this, "Das ist die Ueberschrift",
"Button 0 wurde gedrueckt.
Das war der Default-Button",0);

break;

case 1: // Knopf 1 wurde gedrueckt


// Eine neue MessageBox mit dem Ergebnis
QMessageBox::information(this, "Das ist die Ueberschrift",
"Button 1 wurde gedrueckt.
Das war der Cancel Button",0);

break;

case 2: // Knopf 2 wurde gedrueckt


// Eine neue MessageBox mit dem Ergebnis
QMessageBox::information(this, "Das ist die Ueberschrift",

11
"Button 2 wurde gedrueckt",0);

break;
}

Da wir im Slot MeinErstesProgramm::MySlotMachWas() die Funktion cout und im Slot MeinEr-


stesProgramm::MySlotMessage() die MessageBox verwenden, muessen wir in der Datei meinerste-
sprogramm.h folgende Praeprozessor-Anweisungen vornehmen:
#include<iostream>
#include<qmessagebox.h>

Nun konnen wir mit connect die beiden anderen Buttons mit den in unserer Klasse MeinErstesPro-
gramm erstellten Slots verbinden:
connect( MessageKnopf, SIGNAL(clicked()), this , SLOT(MySlotMessage()));
connect( MachWasKnopf, SIGNAL(clicked()), this , SLOT(MySlotMachWas()));

Nach einem abschliessenden Startversuch sollten eigentlich alle Buttons eine Funktion haben.

4.5 Menueleiste
Auch das Einfuegen einer Menueleiste geht einfach, wir brauchen dazu folgende Headerdateien in
der Datei meinerstesprogramm.h:
#include <kmenubar.h>
#include <qpopupmenu.h>

Durch Einfuegen der folgenden Zeilen in die Datei meinerstesprogramm.cpp wir die Menueleiste
erstellt.

Menueleiste mit Popupmenue

Als erstes wird ein Popup-Menue erstellt, mit Werten gefuellt und diese mit Slots verbunden. Vor
dem Ende Eintrag wird eine Querlienie mit insertSeperator eingefuegt.
Anschliessend wird eine KMenueBar erstellt und in diese das zuvor erstellte QPopupMenue file
eingefuegt.
Wie wir an dem Menue sehen koennen, ist es auch moeglich, Objekte in einer Zeile zu definieren
und zu erstellen.

12
// Popup Menues erstellen und mit Slots verbinden
QPopupMenu *file = new QPopupMenu(); // Popup-Menue erstellen
file->insertItem("&Mach Was ...",this,SLOT(MySlotMachWas()));
file->insertItem("Message &Box ...",this,SLOT(MySlotMessage()));
file->insertSeparator(); // Querstrich im Menue einfuegen
file->insertItem("&Ende ...",qApp,SLOT(quit()));

// Menueleste erstellen und das zuvor erstellte QPopupMenue "file" einfuegen


KMenuBar *menu = new KMenuBar(this);
menu->insertItem("&File",file);

13
5 Anhang
5.1 Quellcode
Es folgen der Quellcode von MeinErstesProgramm. Die Datei main.cpp wurde so belassen, wie sie
vom Anwendungsassistenten erstellt wurde.

5.1.1 main.cpp

/***************************************************************************
main.cpp - description
-------------------
begin : Son Dez 9 22:46:17 CET 2001
copyright : (C) 2001 by Rupert Wenzel
email : ruwela@web.de
***************************************************************************/

/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/

#include <kcmdlineargs.h>
#include <kaboutdata.h>
#include <klocale.h>

#include "meinerstesprogramm.h"

static const char *description =


I18N_NOOP("MeinErstesProgramm");
// INSERT A DESCRIPTION FOR YOUR APPLICATION HERE

static KCmdLineOptions options[] =


{
{ 0, 0, 0 }
// INSERT YOUR COMMANDLINE OPTIONS HERE
};

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

KAboutData aboutData( "meinerstesprogramm", I18N_NOOP("MeinErstesProgramm"),


VERSION, description, KAboutData::License_GPL,
"(c) 2001, Rupert Wenzel", 0, 0, "ruwela@web.de");
aboutData.addAuthor("Rupert Wenzel",0, "ruwela@web.de");
KCmdLineArgs::init( argc, argv, &aboutData );
KCmdLineArgs::addCmdLineOptions( options ); // Add our own options.

KApplication a;
MeinErstesProgramm *meinerstesprogramm = new MeinErstesProgramm();
a.setMainWidget(meinerstesprogramm);
meinerstesprogramm->show();

return a.exec();
}

15
5.1.2 meinerstesprogramm.h
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#include <kapp.h>
#include <qwidget.h> // Fuer QWidget
#include <qpushbutton.h> // Fuer QPushButton - Knoepfe
#include <qlineedit.h> // Fuer QLineEdit - Textfeld
#include<iostream> // Fuer cout Standardausgabe an der Konsole
#include <qmessagebox.h> // Fuer QMessageBox
#include <kmenubar.h>// Fuer KMenuBar - Menueleiste
#include <qpopupmenu.h>// Fuer QPopupMenu Menues in der Menueleiste

/** MeinErstesProgramm is the base class of the project */


class MeinErstesProgramm : public QWidget
{
Q_OBJECT

private:
QPushButton *EndeKnopf; // Zeiger fuer Ende Knopf erstellen
QPushButton *MachWasKnopf; // Zeiger fuer MachWas Knopf erstellen
QPushButton *MessageKnopf; // Zeiger fuer Message Knopf erstellen

public:
QLineEdit *TextFeld; // Zeiger auf das Textfeld erstellen Muss public sein da sonst nicht
// von aussen ( MySlotMachWas() ) auf ihn zugegriffen werden kann

public slots:
void MySlotMachWas(); // Slot fuer MachWas Knopf erstellen
void MySlotMessage(); // Slot fuer Message Knopf erstellen

public:
/** construtor */
MeinErstesProgramm(QWidget* parent=0, const char *name=0);
/** destructor */
~MeinErstesProgramm();
};

#endif

16
5.1.3 meinerstesprogramm.cpp
/***************************************************************************
meinerstesprogramm.cpp - description
-------------------
begin : Son Dez 9 22:46:17 CET 2001
copyright : (C) 2001 by Rupert Wenzel
email : ruwela@web.de
***************************************************************************/

/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/

#include "meinerstesprogramm.h"

MeinErstesProgramm::MeinErstesProgramm(QWidget *parent, const char *name) : QWidget(parent, na-


me)
{

// Fenster-Groesse einschraenken (Breite , Hoehe)


setMinimumSize( 160, 210 );
setMaximumSize( 160, 210 );

// Fensterposition: 100=Abstand linker Rand,


// 200=Ab-
stand von oben
// Fenstergroesse: 160=Breite, 140=Hoehe
this->setGeometry(100, 200, 160, 210 );

// Fenster Titel festlegen


this->setCaption("Programm");

// 3 Buttons erzeugen
EndeKnopf = new QPushButton( "&Ende",this);
MachWasKnopf = new QPushButton( "&Mach Was", this);
MessageKnopf = new QPushButton( "Message&Box", this);

// Widgets platzieren

17
// Name->setGeometry( linker Abstand , oberer Abstand , Breite , Hoehe )
MachWasKnopf->setGeometry(20,40,120,30);
EndeKnopf->setGeometry(20,80,120,30);
MessageKnopf->setGeometry(20,120,120,30);

// 1 Textfeld erzeugen
TextFeld = new QLineEdit ( this );
TextFeld->setGeometry(20,160,120,30);

// Verbindung des Click-Events mit den Slots


connect( EndeKnopf, SIGNAL(clicked()), qApp, SLOT(quit()) );

connect( MessageKnopf, SIGNAL(clicked()), this , SLOT(MySlotMessage()));


connect( MachWasKnopf, SIGNAL(clicked()), this , SLOT(MySlotMachWas()));

// Popup Menues erstellen und mit Slots verbinden


QPopupMenu *file = new QPopupMenu();
file->insertItem("&Mach Was ...",this,SLOT(MySlotMachWas()));
file->insertItem("Message &Box ...",this,SLOT(MySlotMessage()));
file->insertSeparator(); // Querstrich im Menue
file->insertItem("&Ende ...",qApp,SLOT(quit()));

// Menueleste erstellen und das zuvor erstellte Popupmenue "file" einfuegen


KMenuBar *menu = new KMenuBar(this);
menu->insertItem("&File",file);
}

MeinErstesProgramm::~MeinErstesProgramm()
{
}

void MeinErstesProgramm::MySlotMachWas()
{
// Schreibe in das Textfeld "Hallo Welt"
TextFeld->setText("Hallo Welt");

// Schreibe in die Standardausgabe "Hallo Welt"


cout << "Hallo Welt\n" ;
}

void MeinErstesProgramm::MySlotMessage()
{

18
// MessageBox mit Critical Icon, 3 Knoepfen "Button 0 \n
// OK", "Button 1\n Escape", "Button 2" Knopf 0 ist Default Knopf 1 ist Escape

switch( QMessageBox::information( this,"Text im Textfeld:",


TextFeld->text(), // Textfeld auslesen
"Button 0 \n OK",
"Button 1\n Escape",
"Button 2",0,1))

{
case 0: // Knopf 0 wurde gedrueckt
// Eine neue MessageBox mit dem Ergebnis
QMessageBox::information(this, "Das ist die Ueberschrift",
"Button 0 wurde gedrueckt.
Das war der Default-Button",0);

break;

case 1: // Knopf 1 wurde gedrueckt


// Eine neue MessageBox mit dem Ergebnis
QMessageBox::information(this, "Das ist die Ueberschrift",
"Button 1 wurde gedrueckt.
Das war der Cancel Button",0);

break;

case 2: // Knopf 2 wurde gedrueckt


// Eine neue MessageBox mit dem Ergebnis
QMessageBox::information(this, "Das ist die Ueberschrift",
"Button 2 wurde gedrueckt",0);

break;
}
}

19

Das könnte Ihnen auch gefallen