Visual Studio 2010 mit Qt

Für viele Projekte möchte man am PC mittels eigener Software Daten verarbeiten oder angezeigt bekommen. Bisher habe ich mir meist mit der Mircrosoft Foundation Class (MFC) im Visual Studio [1] eigene GUIs zusammengebaut. Im Zuge der Verbreitung von Android auf leistungsfähigere Geräte (z.B. RaspberryPi, BeagleBone etc.) ist die GUI-Entwicklung für Steuerungs- und Analysezwecke auch für andere Plattformen interessant geworden.
Dafür bietet sich Qt [2] sehr gut an. Qt ist eine Klassenbibliothek für plattformübergreifende graphische Benutzeroberflächen, welche frei verfügbar, kostenlos und sehr gut dokumentiert ist. Die verwendete Qt Klassenbibliothek (Version 4.8.6) steht unter LGPLv3 (Lesser General Public License V3). Damit erlauben die Entwickler der Qt-Bibliothek dem Nutzer das Einbinden ihrer Bibliotheken in eigene, proprietäre Software, ohne den Quellcode der eigenen Software offen legen zu müssen. Dem Endnutzer muss jedoch die Änderung der unter LGPL-stehenden Softwareteile ermöglicht werden, weshalb diese Teile in Form dynamischer Programmbibliotheken (DLL) verwendet werden.

Qt bietet nebst der Bibliothek auch eine freie IDE, den Qt-Creator, an. Wer jedoch die gewohnte Umgebung von Visual Studio nicht vermissen möchte, kann relativ einfach die Qt Bibliothek in Visual Studio 2010 einbinden [3]. Außerdem gibt es Qt Widgets für technische Anwendungen, abgekürzt mit Qwt [4], welche eine Reihe von fertigen Widgets zu Verfügung stellt (z.B. Tachometer, Thermostaten, Kompass, Slider, Plots, Graphen etc.). Die auf die Qt Klassenbibliothek aufbauende Erweiterung Qwt (Version 6.1.2) steht ebenfalls unter LGPLv3. Die Einbindung von Qwt in die Qt-Bibliothek ist etwas tricky, weshalb ich hier ein kleines Tutorial dazu ausführen möchte.

Folgende Schritte sind zur Installation und Einrichtung vorzunehmen:

Microsoft Visual Studio herunterladen (siehe [1]) und installieren. Als Student bzw. Lehrkraft hat man meist auch Zugang zum DreamSpark Lizensprogramm für Bildungseinrichtungen (früher MSDNAA), woher man kostenlos die Premium / Professional oder Ultimate Versionen der Software bekommt.

Schritt 1: Visual Studio installieren

Neben der Installation von Visual Studio kann gleichzeitig auch gleich die Qt-Bibliothek installiert werden. Dazu einfach das Installationspaket [2] herunterladen und den Installationsassistenten folgen.

Qt Lib installieren

Solbald die Entwicklungsumgebung und die Qt-Bibliothek installiert wurden, kann das VS-Plugin [3] heruntergeladen und installiert werden.

Qt Plugin für VS2010 installieren

Dieses Plugin stellt alle notwendigen Verknüpfungen zwischen der Qt-Bibliothek und Visual Studio her, so dass direkt in Visual Studio neue Qt Projekte angelegt und erstellt werden können.

Qt erfolgreich in VS2010 implementiert

Fertig ist die Implementierung von Qt auf ein Windows-Betriebssystem und Visual Studio 2010 als Entwicklungsumgebung. Nun können ganz einfach Qt-Projekte erstellt werden. Damit die Projekte auch richtig übersetzt werden, müssten die jeweiligen Libraries noch in die Projektverzeichnisse eingebungen werden. Das erledigt das Qt-Plugin beim erstmaligen erstellen des Projektes ganz von selbst! So einfach kann es gehen...

Bisher stellte sich die Installation wirklich einfach dar. Für viele kleine Projekte benötigt man mal schnell ein paar analoge Anzeigen, Diagramme oder Drehknöpfe u.v.m. Wie eingangs erwähnt gibt es dafür die Qwt-Bilbiothek, welche viele dieser ferigen Widgets bereitstellt. Die Installation dieser ist jedoch nicht so einfach, wie bei der standard Qt-Bibliothek, da es hierfür kein Plugin fertig gibt.

Starten wir also mit Schritt 1: Herunterladen der Qwt-Bibliothek [4]! Nach Abschluss des Downloads dann einfach das zip-Archiv z.B. nach C:\Qt\qwt-6.1.1 entpacken.

Qwt Lib herunterladen und entpacken

Wenn das Archiv erfolgreich entpackt wurde, begeben wir uns im Explorer in dieses Verzeichnis und öffnen die Datei "qwtconfig.pri" mit einem Editor (z.B. Notepad++). Diese Konfigurationsdatei enthält einige wichtige Konfigurationsparameter, welche beim Übersetzen der Bibliothek korrekt eingestellt sein sollten. Prinzipiell können, bis auf einige wenige, die voreingestellten Parameter übernommen werden. Zu beachten sind als erstes die "QWT_INSTALL_PREFIX" - also das "Installationsverzeichnis, in welches die Bibliothek übersetzt werden soll. Diese habe ich angepasst, damit Qwt in die Qt-Bibliothek integriert wird (QWT_INSTALL_PREFIX    = C:/Qt/4.8.6/Qwt-$$QWT_VERSION)

Qwt Compiler-Einstellungen anpassen

Standardmäßig sollte unter "QWT_INSTALL_FEATURES" die Zeile "QWT_CONFIG           += QwtDll" nicht auskommentiert sein, und falls doch, ist es Ratsam diese Zeile zu aktivieren. Denn seit der Version 4.5 von Qt steht die Bibliothek unter der LGPL -Lizensierung, weshalb nicht statisch gelinkt werden darf. Zu den erstellten, ausführbaren Programmen müssen dann jeweils die benötigten .DLL-Dateien (Dynamic Link Libraries) mitgeliefert werden, denn diese sind für den Dritten nicht einsehbar.

Nun Gut. Nach speichern und schließen der Datei kann es an die Übersetzung gehen, Dazu öffnen wir die Konsole der Qt-Bibliothek. Wichtig hierbei ist, dass es wirklich die von Qt mitgelieferte Bibliothek ist, da sonst die Kompilereinstellungen nicht übereinstimmen.

Console öffnen und Verzeichnis ändern

Es öffnet sich eine Konsole, die wie die Standard-Windows Konsole aussieht. Als nächstes begeben wir uns in das Qwt-Verzeichnis (hier: C:\Qt\qwt-6.1.1). Dies erreichen wir durch eintippen der Befehle (ohne " "):

"cd \" = gehe ins oberste Verzeichnis (C:)
"cd Qt\qwt-6.1.1" = gehe in das Qwt Verzeichnis

Danach tippen wir "qmake qwt.pro" ein, um ein Projekt anzulegen, welches die Übersetzung der Qwt Bibliothek ermöglicht.

Projekt übersetzen

Dieser Vorgang dauert nur wenige Sekunden und endet ohne irgendeinen Hinweis auf Fertigstellung. Wenn der Cursor einen neue Zeile erreicht hat, ist es fertig und wir übersetzen das Projekt bzw. die Bibliothek durch eintippen von "nmake" in die Konsole und Bestätigen mit Enter.

mit MS VC-Compiler compillieren und installieren

Man sieht darauf hin viele Anweisungen durch die Kommandozeilen fliegen, welche nach ungefähr einer Minute mit den oberen Bild ersichtlichen Anweisungen enden. Nun müssen die kompillierten Quelldateien noch installiert werden. Dies gelingt ganz einfach durch eintippen von "nmake install".

Command verlassen

Nach abschluss des Kopiervorgangs kann die Konsole durch "exit" beendet werden. Um die Qwt-Widgets auch im Qt-Designer (dem Gui-Designer) ersichtlich zu machen, muss noch die dazu notwendige Designer-Plugin-Bibliothek ind das Designer Verzeichnis kopiert werden. Dazu einfach die qwt_designer_plugin.dll/-lib kopieren....

Qwt Designer Plugin kopieren

...und in das ..\plugin\designer-Verzeichnis einfügen:

Qwt in Qt Designer einfügen

Nun sind die Qwt-Widgets im Qt-Designer ersichtlich und können per Drag&Drop auf die GUI implementiert werden.

Qwt Widgets im Designer

Um die Qwt-Widgets nun auch im Visual Studio mit Funktion zu erfüllen, müssen noch die Include sowie Bibliotheksverzeichnisse in die Projekteigenschaften eingegeben werden. Für Qt übernahm das Qt-VS2010-Plugin diese Aufgabe - für die Qwt-Widgets muss es bei jedem Projekt, bei dem Qwt verwendet wird, manuell eingetragen werden:

Qwt Verzeichnisse zum Projekt hinzufügen

Im Projekt gehen wir dazu in die Projekteigenschaften -> VC++ Verzeichnise -> include Verzeichnisse. Dort fügen wir das (hier C:\Qt\4.8.6\Qwt-6.1.1\include) Verzeichnis ein. Unter VC++ Verzeichnisse-> Bibliotheksverzeichnisse fügen wir noch den Ordner in der die Qwt-Libs liegen ein (hier C:\Qt\4.8.6\Qwt-6.1.1\lib).

Qwt Lib zum Projekt hinzufügen

Der Linker muss natürlich mit den Symbolen (Funktionen) auch etwas anfangen können, daher muss die Qwt-Lib auch dem Linker bekannt gemacht werden. Dazu trägt man in den Projekteigenschaften unter Linker -> Eingabe -> zusätzliche Abhängigkeiten - die qwtd.lib für den Debug Mode bzw. die qwt.lib für den Release Mode ein.

Und nun sollte es keine Probleme beim erstellen von Qt-Benutzeroberflächen mit Qwt-Qidgets mehr geben. Viel Spaß beim Programmieren! ;)

[1] Microsoft Visual Studio 2010 als Trial Versionen zum download: click mich
[2] Qt 4.8.6 Bibliothek für Windows (VS 2010): click mich
[3] Qt 4 Plug-In für Visual Studio 2010: click mich
...wenn Qt Links nicht mehr aktuell: http://qt-project.org/downloads -> Show Downloads
[4] Qwt 6.1.1 Bibliothek als download: click mich