Login
Newsletter
Werbung

Mo, 21. Januar 2002, 00:00

Qt-Programmierung Teil 2

Das Hauptprogramm

kompletter Quellcode der Programmbeispiele

Im Hauptprogramm hat sich nicht besonders viel geändert.

 1  #include <qapplication.h>  // QApplication
2 #include "chelloworld.h" // CHelloWorld
3
4 int main(int argc, char **argv)
5 {
6 QApplication app(argc, argv);
7
8 // Create a CHelloWorld object
9 CHelloWorld *window = new CHelloWorld();
10
11 // Main window = CHelloWorld object
12 app.setMainWidget(window);
13
14 // Show the window
15 window->show();
16
17 // Go to the main loop
18 return app.exec();
19 }
Listing 1: main.cpp

CHelloWorld: Header

Der Header kann fast direkt von CHelloWorldWindow übernommen werden, wie er vom uic generiert wird. Die einzige Anpassung ist, dass der in der Klasse CHelloWorldWindow noch virtuelle Slot public slot showGreeting() hier implementiert wird und nicht mehr virtuell ist.

Sobald man in einer Klasse ein Signal oder Slot definiert, muss auch das Makro Q_OBJECT angegeben werden, damit das ganze noch korrekt durch den Qt MetaObjectCompiler (moc) bearbeitet wird (dies geschieht automatisch durch das von TMake generierte Makefile).

 1  #ifndef CHELLOWORLD_H
2 #define CHELLOWORLD_H
3
4 #include "CHelloWorldWindow.h" // CHelloWorldWindow
5
6 class CHelloWorld : public CHelloWorldWindow
7 {
8 // Q_OBJECT macro - only needed if signals or slots are defined
9 Q_OBJECT
10
11 public:
12 CHelloWorld( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
13 ~CHelloWorld();
14
15 public slots:
16 void showGreeting();
17 };
18
19 #endif // CHELLOWORLD_H
Listing 2: chelloworld.h

CHelloWorld: Implementierung

Bei der Implementierung der abgeleiteten Klasse beschränken sich die Arbeiten auf die Funktion showGreeting().

War die Slot-Funktion showGreeting() in der Vaterklasse CHelloWorldWindow noch virtuell, so wird sie hier endlich implementiert. Diese Slot-Funktion soll, wenn der QPushButton gedrückt wird, eine Begrüßung in einer MessageBox ausgeben. Für die MessageBox ist der Header qmessagebox.h notwendig.

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