Visual Studio 2010 mit Qt
- Details
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.
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.
Solbald die Entwicklungsumgebung und die Qt-Bibliothek installiert wurden, kann das VS-Plugin [3] heruntergeladen und installiert werden.
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.
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.
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)
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.
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.
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.
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".
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....
...und in das ..\plugin\designer-Verzeichnis einfügen:
Nun sind die Qwt-Widgets im Qt-Designer ersichtlich und können per Drag&Drop auf die GUI implementiert werden.
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:
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).
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