Aus Linux-Magazin 10/2009

Die integrierte Entwicklungsumgebung Qt Creator

Für C++-Entwickler, die Anwendungen mit Qt scheiben, hat der Toolkit-Eigentümer Nokia seit Kurzem ein neues Werkzeug im Angebot: Die hauseigene integrierte Entwicklungsumgebung Qt Creator bietet pfiffige Features, die dem Programmierer das Leben leichter machen .

Mit diesem Artikel beginnt das Linux- Magazin eine kleine Reihe zu C++-IDEs für die Anwendungsentwicklung mit dem Qt-Toolkit. Den Anfang macht der Qt Creator aus dem Hause Nokia, in späteren Ausgaben folgen die Entwicklungsumgebung Kdevelop und eine passend aufgerüstete Eclipse-Installation.

Qt Creator konkurriert laut Whitepaper des Herstellers [1] jedoch nicht mit anderen Entwicklungsumgebungen wie etwa Eclipse, sondern soll die bereits erhältlichen Qt-Entwicklungswerkzeuge sinnvoll ergänzen. Wer auf der Homepage von Nokias Qt-Sparte zum kompletten SDK greift, bekommt deshalb den Qt Creator gleich mitgeliefert.

Die IDE gibt es aber auch einzeln als fertige Binärdatei oder wahlweise im Quellcode (siehe Kasten “Installation”). Qt Creator steht wie das gesamte übrige Framework unter der LGPL. Darüber hinaus ist das Werkzeug selbst in Qt geschrieben, es dient somit gleichzeitig als Demo-Anwendung für das Toolkit.

Aufgeräumt

Nach dem Start präsentiert Qt Creator die gut aufgeräumte Oberfläche aus Abbildung 1. Im Gegensatz zu anderen Entwicklungsumgebungen, die mit Fenstern und überfrachteten Symbolleisten nur so um sich werfen, verteilt Qt Creator alle Funktionen auf mehrere Register.

Abbildung 1: Der Begrüßungsbildschirm von Qt Creator. Die großen Buttons am linken Bildschirmrand schalten schnell zwischen den jeweiligen Modi wie »Editieren« oder »Debuggen« um.

Abbildung 1: Der Begrüßungsbildschirm von Qt Creator. Die großen Buttons am linken Bildschirmrand schalten schnell zwischen den jeweiligen Modi wie »Editieren« oder »Debuggen« um.

In jedem dieser so genannten Modes finden sich nur genau jene Informationen und Funktionen, die für die entsprechende Entwicklungsstufe notwendig sind. So kümmert sich beispielsweise das Register »Editieren« ausschließlich um die Eingabe des Quellcode, während man unter »Debuggen« das erstellte Programm auf Herz und Nieren prüft. Dank dieser ungewöhnlichen und ziemlich radikalen Aufteilung kann sich der Entwickler voll und ganz auf seine eigentlichen Aufgaben konzentrieren, was wohl jeder nach kurzer Eingewöhnung schnell zu schätzen weiß.

Durch den so gewonnenen Platz kommt die Benutzeroberfläche sogar mit den kleinen Bildschirmen von Net- oder Subnotebooks zurecht. Dort sieht der Anwender bei der Konkurrenz oft den Code vor lauter Fenstern und Menüs nicht. Besonders wichtige Informationen wie die Ausgaben des Compilers oder der fertigen Anwendung lassen sich in allen Modes schnell über die Knöpfe am unteren Bildschirmrand hervorholen beziehungsweise wieder verstecken.

Dort unten wartet auch ein äußerst intelligentes Eingabefeld, der so genannte Locator. Er findet nicht nur die zum eingetippten Suchbegriff passenden Dateien, sondern wühlt bei Bedarf auch in ihren Inhalten. Für Letzteres muss der Programmierer allerdings zu einer leicht erlernbaren Kommandosprache greifen: Sucht er beispielsweise in seinem Projekt die Klasse »TextEditor«, reicht dem Locator ein »c« gefolgt von einem Leerzeichen und dem Klassennamen.

Der Locator spuckt schon während der Eingabe alle in Frage kommenden Fundstellen in einer Liste aus (Abbildung 2). Analog sucht das Tool nach Methoden (Kürzel »m«) oder in der Hilfe (»?«). Sind die Kürzel einmal im Kopf, erweist sich der Locator gerade bei größeren Projekten als äußerst nützliche Navigationshilfe.

Abbildung 2: Der Locator, als Eingabefeld unten rechts zu erkennen, spuckt alle Fundstellen schon während der Eingabe des Suchworts aus. Hier fahndet er nach einer Klasse, die »textf« im Namen trägt.

Abbildung 2: Der Locator, als Eingabefeld unten rechts zu erkennen, spuckt alle Fundstellen schon während der Eingabe des Suchworts aus. Hier fahndet er nach einer Klasse, die »textf« im Namen trägt.

Freundlicher Empfang

Direkt nach seinem Start aktiviert der Qt Creator den »Willkommen«-Modus aus Abbildung 1. Über ihn können Einsteiger die Beispiele aus der Qt-Dokumentation öffnen, verschiedene Kurzanleitungen einsehen, die letzten “Neuigkeiten aus den Qt Labs” erfahren und die wichtigsten Internetseiten zum Thema Qt-Programmierung aufrufen.

Ältere Hasen öffnen ein bestehendes Projekt oder starten den Project Wizard. Dieser Assistent fragt in wenigen Schritten alle Eckdaten der zu erstellenden Anwendung ab und generiert anhand der Antworten einen Satz passender Projekt- und Quellcode-Dateien. Leider bleibt der User fast ausschließlich auf Qt-basierte Ziele festgenagelt, etwa ein Qt-Konsolenprogramm oder eine Qt-GUI-Anwendung. Ein »Makefile basiertes Projekt« lässt sich lediglich importieren.

Tippse

Im nächsten Schritt gilt es, das produzierte Code-Grundgerüst mit Inhalt zu füllen. Dies übernimmt der nächste Modus »Editieren«, der zu diesem Zweck einen funktionsreichen Texteditor bereithält (Abbildung 3). Wie andere Editoren für Programmierer kann er zusammengehörige Code-Abschnitte wegklappen, unterkringelt Tippfehler und beherrscht Syntax-Highlighting. Letzteres ist allerdings wieder nur auf die Qt-Eigenheiten zugeschnitten. So erscheinen beispielsweise alle Qt-Klassen in Lila, die eigenen verbleiben hingegen in schnödem Schwarz. In die Farbgebung eingreifen darf der Benutzer derzeit nur in stark begrenztem Maße.

Abbildung 3: Der Quellcode-Editor nimmt fast den gesamten Bildschirm in Beschlag. Alle seit dem letzten Speichern geänderten Teile markiert er mit einem roten Balken am linken Rand des Quelltexts.

Abbildung 3: Der Quellcode-Editor nimmt fast den gesamten Bildschirm in Beschlag. Alle seit dem letzten Speichern geänderten Teile markiert er mit einem roten Balken am linken Rand des Quelltexts.

Bei ausgeblendeten Code-Abschnitten platziert Qt Creator hinter dem verbliebenen Rest ein kleines Symbol. Fährt die Maus darüber, blendet der Editor die versteckten Zeilen in einem Tooltip ein – ein pfiffiges Detail, das den Programmierer davor bewahrt, ständig Codeteile ein- und wieder ausklappen zu müssen. Bei der Eingabe unterstützt Qt Creator den Programmierer mit den mittlerweile branchenüblichen Hilfen: Per Code Completion vervollständigt der Editor automatisch Klassen- und Methodennamen, während bei der Eingabe von Funktionsaufrufen ein kleiner Tooltip mit den verlangten Argumenten erscheint.

In den Tests für diesen Artikel litten diese Hilfen allerdings immer wieder an Gedächtnisschwund. Insbesondere selbst geschriebene Klassen ignoriert die Entwicklungsumgebung, die komplexen Standard Templates hingegen bereiteten offenbar keine Probleme. Generell springt die Autovervollständigung erst nach ein paar Zeichen an. Möchte der Programmierer dem Editor die Vorschläge früher abpressen, muss er die im Alltag etwas umständliche Tastenkombination [Strg]+[Leertaste] verwenden.

Apropos Tastenkürzel: [Strg]+[/] kommentiert einen Block schnell aus beziehungsweise wieder ein. Dummerweise liegt der Schrägstrich auf deutschen Tastaturen über der [7], was die eigentlich praktische Funktion in eine Übung für angehende Fingerakrobaten verwandelt. Glücklicherweise darf man die Tastaturbelegung in den Einstellungen nach eigenen Vorstellungen verändern. Freunde des Vi-Editors dürfen dort zudem dessen Tastenkürzel zuschalten.

Klammern ergänzte beziehungsweise schloss die getestete Version 1.2.1 ebenfalls nicht automatisch. Lediglich im Rahmen der automatischen Vervollständigung setzte Qt Creator bei bekannten Funktionen eine öffnende Klammer. Einrückungen übernimmt der Editor selbstständig, arbeitet aber standardmäßig mit Leerzeichen anstelle der sonst üblichen Tabulatoren.

Dagegen bleibt der Entwickler bei der Dokumentation des Code auf sich allein gestellt, Systeme wie Doxygen kennt Qt Creator nicht. Änderungen am Quellcode speichert der Editor nur auf expliziten Befehl hin, eine automatische Sicherung in festgelegten Intervallen fehlt. Sollte das System oder Qt Creator abstürzen, ist die bisher geleistete Arbeit perdu.

Schnellzugriff

Sämtliche zum aktuellen Projekt gehörenden Dateien sammelt die Entwicklungsumgebung in der Seitenleiste am linken Bildrand. Ergänzend wechselt eine Ausklappliste am oberen Rand zwischen allen geöffneten Dateien. Wem das nicht schnell genug geht, der darf links unten in der Seitenleiste den Abschnitt »Open Documents« einblenden. Er verschafft einen Überblick über die geöffneten Dateien und zeigt, welche noch nicht gespeichert sind.

Eine weitere Ausklappliste am oberen Rand stellt alle Klassen, Methoden und Attribute der gerade geöffneten Datei zur Auswahl (Abbildung 4). Ein gezielter Mausklick springt dann direkt zur entsprechenden Codestelle. Gerade bei längerem Quellcode bewahren Lesezeichen die Übersicht und helfen die wichtigen Stellen schnell zu erreichen.

Abbildung 4: Über die Ausklappliste am oberen Rand springt der Benutzer schnell zu einem Symbol.

Abbildung 4: Über die Ausklappliste am oberen Rand springt der Benutzer schnell zu einem Symbol.

Den aktuellen Zustand von Qt Creator darf der Programmierer als so genannte Sitzung (Session) speichern. Auf diese Weise kann er schnell zwischen verschiedenen Arbeitsumgebungen hin- und herschalten. Ein Druck auf [F1] ruft die kontextabhängige Hilfe auf. Steht der Cursor beispielsweise auf einem »QString«, landet man direkt bei dem entsprechenden Eintrag der Qt-Klassenreferenz. Die Hilfe kann dabei auch eigene Quellen anzapfen, die dafür allerdings als fertige ».qch«-Dateien (Qt Compressed Help) vorliegen müssen.

Noch arg verbesserungsbedürftig ist die Dokumentation zum Qt Creator selbst: Das so genannte Handbuch besteht lediglich aus einer Schnelleinführung, Gleiches gilt für die auf Youtube veröffentlichten Videos. Viele Funktionen und Einstellungen muss sich der Benutzer zwangsweise selbst durch Ausprobieren erschließen. Sämtliche Bestandteile eines Projekts verstaut Qt Creator nicht mehr nur in einem Repository der Versionsverwaltung Perforce, sondern mittlerweile auch in Git- und Subversion-Pendants. Die Zusammenarbeit beschränkt sich jedoch auf das Wesentliche: Neben dem obligatorischen Ein- und Auschecken der Dateien bildet ein Blick auf die Unterschiede einer Datei zur letzten Version (Diff) sowie in die History und Logs schon das Höchste der Gefühle.

Integrierter Malkasten

Sobald der Anwender eine ».ui«-Datei öffnet, weicht der Texteditor dem Qt Designer (Abbildung 5). Er integriert sich nahtlos in den Qt Creator. Einsteiger werden vermutlich gar nicht merken, dass sie hier einem älteren Tool gegenübersitzen. Der Qt Designer erlaubt es, per Drag & Drop selbst komplexere Benutzeroberflächen schnell zusammenzuklicken. Dazu zieht der Anwender einfach das gewünschte Widget aus der linken Liste auf das Fenster in der Mitte. Anschließend passt er nur noch die Objekteigenschaften auf der rechten Seite an und verbindet dann Signale und Slots. So viel Komfort kostet allerdings wieder Fensterplatz – auf kleinen Bildschirmen wird es schnell eng.

Abbildung 5: Der Qt Designer fügt sich nahtlos in die Entwicklungsumgebung ein. Es fällt kaum auf, dass das Tool einst eine eigenständige Anwendung war.

Abbildung 5: Der Qt Designer fügt sich nahtlos in die Entwicklungsumgebung ein. Es fällt kaum auf, dass das Tool einst eine eigenständige Anwendung war.

Bei der visuellen Gestaltung der Benutzeroberflächen ist damit jedoch Schluss, weitere optische Hilfsmittel und Werkzeuge stellt der Creator nicht zur Verfügung. So fehlt beispielsweise ein bei anderen IDEs üblicher Klassenbrowser – die vorhandenen Ausklapplisten und der Locator ersetzen ihn nur bedingt. An die Darstellung der Klassenbeziehungen, etwa in Form von UML-Diagrammen, sollte man besser gar nicht erst denken. Auch entsprechende externe Werkzeuge lassen sich bislang nicht anbinden.

Qt Creator jongliert auf Wunsch mit mehreren Projekten gleichzeitig. Zu deren Verwaltung dient der Projekte-Modus, in dem man auch die jeweiligen Build-Einstellungen vornimmt. Standardmäßig erstellt der Qt Creator für jedes Projekt ein »Debug«- und ein »Release«-Target, die standardmäßig auf den GNU-C++-Compiler zurückgreifen. Das Duo lässt sich um beliebig viele eigene Ziele erweitern, die zudem alle eine andere Version der Qt-Bibliotheken einsetzen dürfen. Auf diesem Weg lassen sich ältere mit aktuellen Projekten mischen.

Build-Unterstützung

Im Gegensatz zu früheren Qt-Creator-Versionen darf neben QMake und CMake mittlerweile auch eine eigene Variante den Übersetzungsprozess steuern. Die Umgebungsvariablen muss der Anwender jedoch in jedem Fall selbst in einer Liste anpassen beziehungsweise korrigieren. Unterstützung vom Qt Creator darf auch niemand erwarten, der die zugrunde liegende Build- respektive Make-Datei ändern muss – in einem solchen Fall bleibt nur der Texteditor. Stimmen alle Einstellungen, setzt eine der riesigen Schaltflächen am linken unteren Bildschirmrand den Compiler in Gang. Treten dabei Fehler auf, färbt sich der Fortschrittsbalken rot und die Ziffer neben dem Ausrufezeichen verkündet die Anzahl der Probleme. Diese wiederum listet der Modus »Ausgaben« auf, fein säuberlich sortiert nach ihren Quellen, die man über die Ausklappliste am oberen Rand wechselt. Ein Doppelklick auf ein »Build-Problem« genügt, um an die entsprechende Stelle im Quellcode zu springen.

Um der Fehlerquelle auf die Schliche zu kommen, aktiviert der Entwickler den Programmmodus »Debuggen«. Dahinter verbirgt sich im Wesentlichen eine grafische Oberfläche für den GNU Debugger GDB (Abbildung 6). Sie führt den Code auf Wunsch Schritt für Schritt aus und unterstützt Haltepunkte (Breakpoints), also frei definierbare Stellen im Quellcode, an denen der Debugger das Programm vorübergehend unterbricht. Passen muss Qt Creator allerdings bei fortgeschrittenen Funktionen, beispielsweise bei bedingten Haltepunkten.

Abbildung 6: Der »Debug«-Modus erlaubt tiefe Einblicke in die Programmausführung.

Abbildung 6: Der »Debug«-Modus erlaubt tiefe Einblicke in die Programmausführung.

Sobald der Debugger das zu entwanzende Programm stoppt, zeigt er mit dem Callstack die Folge der Funktionsaufrufe, die zur entsprechenden Stelle führten. Dabei nennt er sogar die jeweiligen Positionen der Funktionen im Quellcode. Ergänzend präsentiert er übergebene Parameter sowie den Inhalt von lokalen Variablen. Da der Debugger die Struktur vieler Qt- und STL-Klassen kennt, nimmt er deren Objekte übersichtlich auseinander – beispielsweise präsentiert er die Zeichenkette aus einem »QString« im Klartext.

Darüber hinaus lässt sich der Inhalt einfacher Datentypen, zum Beispiel »int« oder »float«, per Hand ändern und die Anwendung dann mit den neuen Werten fortsetzen.

Pfiffig, aber unfertig

Qt Creator folgt recht konsequent dem Credo “Weniger ist mehr”. Hier muss der Programmierer nicht mit einer überladenen Oberfläche kämpfen, sondern kann sich ganz auf seine Arbeit konzentrieren. Dabei unterstützen ihn pfiffige kleine Hilfen wie etwa der Locator. Nur selten fährt die Maus durch die wenigen, übersichtlichen Menüs. Dabei legt der Qt Creator eine faszinierende Geschwindigkeit an den Tag: Fenster öffnen sich fast umgehend, Syntax-Highlighting und Autovervollständigung trödeln nicht herum wie bei manchen Konkurrenz-IDEs.

Dagegen ärgert der Editor seine Benutzer mit offenbar halbgaren Eingabehilfen: Eine selbstständige Klammersetzung fehlt ebenso wie die automatische Vervollständigung individuell angelegter Klassen. Wünschenswert wären auch eine Übersicht über die Slot-Signal-Zusammenhänge sowie eine verbesserte Unterstützung von Nicht-Qt-Projekten.

Allerdings steht der Qt Creator auch noch am Anfang seiner Entwicklung. Nicht umsonst haben die Macher auf dem Willkommensbildschirm einen »Feedback«-Knopf angebracht. Wer selbst aktiv werden möchte, darf die IDE über Plugins um eigene Funktionen erweitern. Gepaart mit der offenen Lizenz dürfte die Zukunft von Qt Creator somit ziemlich spannend ausfallen. (mhu)

Infos

[1] Homepage von Qt Creator: [http://www.qtsoftware.com/products/developer-tools]

[2] Offizielle Downloadseite: [http://www.qtsoftware.com/downloads]

Installation

Mit dem aktuellen SDK zu Qt 4.5 von der offiziellen Homepage installiert sich automatisch auch der Qt Creator. Gewöhnlich liegt anschließend ein Programm-Icon auf dem Desktop.

Die meisten Linux-Anwender dürften die Qt-Bibliothek jedoch über ihren Paketmanager beziehen. Je nach Distribution müssen sie dann den Qt Creator erst noch aus einem separaten Paket holen. Hierbei ist unbedingt auf die Versionsnummer zu achten. So enthielten zu Redaktionsschluss beispielsweise die Repositories von Ubuntu 9.04 noch die veraltete Creator-Version 1.0.0.

In einem solchen Fall wechselt der Anwender am besten direkt zur Downloadseite von Qt Software [2] und greift am unteren Rand zum Qt-Creator-Binärpaket. Käufer der DELUG-Ausgabe dieses Magazins finden Creator 1.2.1 und SDK auch auf der Heft-DVD.

Die Binärdatei muss man lediglich ausführbar machen und aufrufen. Ein kleiner grafischer Assistent führt dann mit wenigen Mausklicks durch die Installation. Der Qt Creator fühlt sich übrigens auch im eigenen Heimatverzeichnis wohl, ihn dürfen folglich auch Benutzer ohne Root-Rechte einspielen.

LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben