====== Das erste Programm erstellen, kompilieren und ausführen ====== Nun ist es soweit, wir werden unser erstes Qt-Programm erstellen :-) Vorweg der Code (keine Sorge, Erklärung folgt im Anschluss): #include int main( int argc, char *argv[] ) { QCoreApplication app( argc, argv ); return app.exec(); } ===== Kompilieren ===== Es gibt zwei Wege Qt-Programme zu kompilieren: Entweder händisch über die Kommandozeile oder über eine grafische Entwicklungsumgebung. Egal welcher gewählt wird, es sind immer die gleichen Schritte: * Qt erzeugt eine systemunabhängige Projektdatei mit dem Namen des aktuellen Verzeichnisses und der Dateiendung ''.pro''. Darin finden sich alle zum Projekt gehörenden Dateien und Einstellungen zur Verwendung von Qt. Wir können auch noch Befehle an den Compiler weitergeben, z.B. mit dem zusätzlichen ''-Wall''-Parameter werden alle Warnungen vom Compiler angezeigt. * Mit dem nächsten Befehl wird ein systemabhängiges [[build:make:start|Makefile]] erstellt. * Schlussendlich wird mit einem Make-Werkzeug das Programm kompiliert. Der genaue Befehl ist abhängig vom verwendeten Tool und Betriebssystem. * War der letzte Schritt erfolgreich, haben wir nun eine ausführbare Datei. ==== Kommandozeile ==== Zuerst legen wir in einem neuen Ordner (z.B. ''first'') eine Datei ''main.cpp'' an und fügen den obigen Code ein. Danach öffnen wir die Kommandozeile und wechseln in das Verzeichnis des Codes. Nun legen wir zuerst ein Qt-Projekt an: qmake -project Es wird automatisch eine Datei mit dem Namen ''first.pro'' angelegt. Das ist eine Konfigurations-Datei, die das erstellte Projekt beschreibt. Um dieses Projekt zu bauen, müssen folgende Befehle ausgeführt werden: qmake # Makefile anlegen make # Kompilieren ./first, first.exe, etc. # Ausführen Achtung! Unter Windows wird die ausführbare Datei in einem Unterverzeichnis (''Debug'' bzw. ''Release'', je nach Konfiguration) erstellt. Die Ausführung des Programms kann mit der Tastenkombination Strg+C abgebrochen werden. \\ {{:frameworks:qt:preparation:console.png|Projekt in der Konsole erstellen und ausführen}} \\ ==== Entwicklungsumgebung (Qt-Creator) ==== Nachdem wir den Qt-Creator geöffnet haben, wählen wir im Menü unter ''File'' - ''New File or Project...'' den Punkt ''Qt Console Application'' aus.\\ {{:frameworks:qt:preparation:creator_createproject.png|Leeres Qt-Projekt anlegen}} Danach wählen wir einen Namen (hier ''first'') und einen Pfad für das Projekt. Zusätzlich zum ausgewählten Pfad wird automatisch noch ein Unterordner mit dem Namen des Projekts erstellt. {{:frameworks:qt:preparation:creator_projectname.png|Namen des Projekts wählen}} Es gibt mehrere Build-Mechanismen, mit denen ein Qt-Projekt gebaut werden kann. In diesem Fall bleiben wir bei der standardmäßig ausgewählten Option ''qmake''. {{:frameworks:qt:preparation:creator_buildsystem.png|Build-System auswählen}} Als nächstes fragt das Tool, welche Kits zum Bauen des Projekts verwendet werden sollen. Kits beschreiben grundslegende Einstellungen zum Bauen von Projekten, wie etwa das Zielgerät (Desktop, Android, iOS, ...) oder die Qt-Version. Wir bleiben hier lediglich beim ''Desktop''-Kit und sehen bei einem Klick auf ''Details'', dass die Objektdateien und die ausführbare Datei in einem eigenen Verzeichnis auf gleicher Ebene zum Projektverzeichnis enden. Dadurch bleibt unser Projektverzeichnis mit dem Quellcode während des Kompilierens unberührt. {{:frameworks:qt:preparation:creator_kits.png|Kits auswählen}} Zum Abschluss wird angeboten, das Projekt unter Versionsverwaltung (z.B. [[svn:start|Subversion]], [[git:start|git]]) zu stellen. Für dieses Beispiel ist das jedoch nicht notwendig. Wir wählen '''' und Beenden den Dialog mit dem ''Finish''-Button. {{:frameworks:qt:preparation:creator_projectmanagement.png|Versionsverwaltung auswählen}} Nachdem das Dialogfenster geschlossen wurde, kommen wir zur Editoransicht. Es wird automatisch eine Code-Datei namens ''main.cpp'' mit dem von uns gewünschten Beispiel-Code angelegt. Die folgenden Schritte beschreiben den Build-Vorgang über das Kontextmenü. Alle genannten Funktionen sind auch über ''Build'' in der Menüleiste bzw. über Shortcuts erreichbar. Um das Programm zu kompilieren muss zuerst ein Makefile angelegt werden. Dies erreichen wir über das Kontextmenü des Projekts und Auswahl von ''Run qmake''. Als nächstes wählen wir im Kontextmenü den Punkt ''Build''. {{:frameworks:qt:preparation:creator_qmake.png|qmake ausführen}} {{:frameworks:qt:preparation:creator_compile.png|Projekt kompilieren}} Nun wird das Programm kompiliert. Etwaige Probleme beim Kompilieren können wir durch einen Klick auf ''Compile Output'' am unteren Fensterrand des Qt-Creators sehen. Über ''Run'' im Kontextmenü können wir das Programm starten. {{:frameworks:qt:preparation:creator_run.png|Programm ausführen}} Es öffnet sich nun ein Konsolenfenster, das keine Ausgabe liefert. Mit einem Klick auf das rote Viereck in der Leiste des ''Application Output'' Ausgabefensters, kann die Ausführung abgebrochen werden. {{:frameworks:qt:preparation:creator_stop.png|Programm anhalten}} ===== Erklärung des Codes ===== Wenn ihr das Programm bereits ausgeführt habt, werdet ihr merken, dass es nichts macht - zumindest nichts Offensichtliches. Zur Erklärung: Wir inkludieren die Klasse ''QCoreApplication''. ''QCoreApplication'' ist verantwortlich für die Steuerung von Qt-Programmen. Sie sollte in jedem Qt-Programm, genau 1 mal existieren. Jede Qt-Klasse befindet sich in einer Datei mit dem gleichen Namen. #include Als nächstes legen wir eine Instanz der Klasse an und übergeben die Kommandozeilenparameter. Damit können verschiedene Einstellungen vorgenommen werden, mit denen wir uns aber nicht weiter beschäftigen wollen. QCoreApplication app( argc, argv ); Mit der Methode ''exec()'' startet die Event-Schleife, die Ereignisse, die das Programm betreffen behandelt. Dessen Rückgabewert verwenden wir auch als Rückgabewert für unser Programm. return app.exec(); Soweit zu unserem ersten Programm mit Qt. Keine Angst, schon bald werden wir größere Programme erstellen können ;-) \\ Hier ein kleiner Vorgeschmack für jene unter euch, die es noch nicht erwarten können: #include #include int main( int argc, char *argv[] ) { QApplication app( argc, argv ); QLabel label( "

Hallo Welt!

" ); label.show(); return app.exec(); }
Zusätzlich muss in der ''.pro''-Datei noch folgende Zeile eingefügt werden: QT += widgets Durch die Änderung an der Projekt-Konfiguration, ist eine erneute Ausführung von ''qmake'' notwendig. Baut man danach den obigen Code und führt die resultierende Datei aus, erhält man folgendes Fenster: {{:frameworks:qt:preparation:firstgui.png|}} Das Programm beendet sich automatisch nachdem das Fenster geschlossen wurde. Eine genaue Erklärung des Codes folgt in den nächsten Kapiteln.