
Wie verwendet man Qt und QML mit Visual Studio Code und WSL?
Qt und QML bieten ein leistungsstarkes Framework zur Entwicklung moderner, plattformübergreifender Anwendungen mit einer eleganten und reaktionsschnellen Benutzeroberfläche. Während Qt […]
Wir behandeln Qt-bezogene Themen auf unserem Blog, aber erst kürzlich haben wir festgestellt, dass viele unserer Leser vielleicht gar nicht wissen, was Qt überhaupt ist 🧐.
Deshalb habe ich beschlossen, diesen Beitrag zu schreiben, der eine Art Antwort auf die am häufigsten gestellten Fragen ist: Was genau ist das Qt-Framework? Warum sollte man es verwenden und wie erstellt man damit grafische Benutzeroberflächen (GUIs)? Ich werde versuchen, all diese Fragen in diesem Beitrag zu beantworten. Nachdem du ihn gelesen hast, werden dich diese Fragen nicht mehr plagen.
Wenn du bereits mit Qt vertraut bist, lade ich dich trotzdem ein, weiterzulesen, denn man kann immer etwas Neues lernen. Solltest du jedoch Fragen haben, auf die du keine Antwort findest, oder Unterstützung in Qt, QML oder in der C++-Softwareentwicklung benötigen, oder wenn du darüber nachdenkst, professionelle Qt-Dienstleistungen in Anspruch zu nehmen, besuche unsere Seite zu den Qt-Entwicklungsdiensten.
Also, ohne weitere Umschweife – legen wir los!
Fangen wir mit den Grundlagen an: Was genau ist Qt? Einfach ausgedrückt ist Qt ein Open-Source-Framework zur Erstellung plattformübergreifender Anwendungen mit grafischer Benutzeroberfläche.
Das Qt-Framework wurde ursprünglich von Trolltech, einem norwegischen Softwareunternehmen, Mitte der 1990er Jahre entwickelt. 2008 übernahm Nokia Trolltech und unterstützte die Weiterentwicklung von Qt.
Anschließend wurde Qt von verschiedenen Branchen übernommen und wurde Open-Source (heute wird das Qt-Framework von The Qt Company betrieben). Ich werde in diesem Artikel nicht zu sehr auf die Entwicklungsgeschichte des Frameworks eingehen, aber wer neugierig ist, kann sich die Grafik unten ansehen.
Auf der Grafik endet die Zeitlinie im Jahr 2015 – aber das Abenteuer mit Qt geht auch heute noch weiter! Quelle
Die Wahl des richtigen Technologie-Stacks ist immer eine Herausforderung. Wenn du dich fragst, wie Qt im Vergleich zu anderen beliebten Frameworks abschneidet, empfehlen wir dir unseren ausführlichen Vergleichsartikel: Flutter vs React Native vs Qt vs Lynx JS. Er könnte dir helfen, herauszufinden, welche Lösung am besten zu den Anforderungen deines Projekts passt.
Qt basiert hauptsächlich auf der Programmiersprache C++ und ist daher die bevorzugte Wahl für Entwickler, die mit C++ arbeiten. Zusätzlich unterstützt Qt eine weitere Programmiersprache: Python über PySide. Es gibt außerdem Sprachbindungen für Rust, Java und weitere Sprachen.
Die Open-Source-Natur des Qt-Projekts fördert Zusammenarbeit und Innovation. Entwickler haben Zugriff auf den Quellcode, können Fehler beheben und neue Funktionen hinzufügen und tragen so zur kontinuierlichen Verbesserung des Frameworks bei. Wenn du Interesse hast, selbst beizutragen, kannst du stets auf die Unterstützung des Qt-Teams zählen.
Auch wir bei Scythe Studio leisten unseren Beitrag zur Weiterentwicklung von Qt 💪 – sowohl als Qt-Contributors als auch in offizieller Zusammenarbeit mit The Qt Company.
Ich habe schon mehrfach erwähnt, dass Qt ein „Framework“ ist – aber was meine ich damit eigentlich? Schließlich hat man beim Schreiben einer C++-Anwendung bereits Zugriff auf zahlreiche Klassen und Funktionen. Warum also noch mehr? Genau, weil der Appetit beim Essen kommt 😉.
Vielleicht hast du beim Entwickeln eines Projekts schon einmal daran gedacht, coole Funktionalitäten hinzuzufügen: eine Datenbank, eine Netzwerkverbindung oder eine aufwendige Benutzeroberfläche. Allerdings ist reines C++ dafür oft schwerfällig oder nahezu unmöglich einzusetzen – hier kommt Qt zur Hilfe! Lies weiter, um mehr über seine Möglichkeiten zu erfahren.
Wie bereits erwähnt, ist Qt ein Werkzeugsatz, genauer gesagt eine Sammlung von Modulen. Jedes Modul hilft uns, bestimmte Funktionalitäten zu implementieren (zum Beispiel unterstützt uns das Qt-SQL-Modul bei Datenbankoperationen). Diese gebrauchsfertigen Module beschleunigen die Entwicklung erheblich, da sie bewährte Komponenten bereitstellen.
Die wichtigsten Module sind in der Kategorie „Essentials“ zusammengefasst. Diese helfen bei der Implementierung der populärsten Lösungen wie GUI, Multimedia, Netzwerke, Qt-Testklassen oder Sensorunterstützung. Alle Essentials-Module werden auf allen Plattformen gleichmäßig unterstützt.
Suchen wir dagegen nach etwas exotischeren Funktionalitäten, kommen die Module der Kategorie „Add-Ons“ ins Spiel. Die untenstehende Grafik zeigt diese Module:
Man sieht: Qt ist wie ein Schweizer Taschenmesser – es gibt für alles ein passendes Werkzeug!
Auf der Grafik mit den Modulen erkennen wir nicht nur die Plattformen, auf denen Qt läuft (wie bereits besprochen), sondern auf der rechten Seite auch den Bereich „Entwicklungstools“. Die Entwickler von Qt haben sich nämlich nicht darauf beschränkt, nur das Framework bereitzustellen – es gibt eine ganze Reihe von Tools, die die Anwendungsentwicklung erleichtern.
Das bekannteste Tool ist Qt Creator – eine integrierte Entwicklungsumgebung (IDE), die speziell für die Entwicklung von Qt-Anwendungen entwickelt wurde. Sie bietet zahlreiche Werkzeuge und Funktionen, die speziell auf die Qt-Entwicklung zugeschnitten sind, wodurch sich Entwicklungszeit sparen und der gesamte Prozess effizienter gestalten lässt.
Hier einige zentrale Merkmale von Qt Creator:
Cross-Platform-Unterstützung: Qt Creator läuft auf verschiedenen Plattformen – Windows, macOS (OS X) und diversen Linux-Distributionen – und ermöglicht einen optimierten Entwicklungsprozess.
Code-Editor: Der Editor bietet Funktionen wie Syntax-Highlighting, Code-Vervollständigung und Navigation, die die Arbeit der Entwickler erleichtern und beschleunigen.
Integrierter Debugger und Profiler: Ein eingebauter Debugger erleichtert das Auffinden und Beheben von Fehlern und sorgt für effizientere Feedbackzyklen.
…und viele weitere Funktionen!
Ich selbst benutze Qt Creator täglich, und mit jedem Update wird er besser. Für Anfänger empfehle ich insbesondere den „Examples“-Tab, in dem viele Beispielanwendungen vorgestellt werden, an denen man sich orientieren kann.
Weitere wichtige Tools sind zum Beispiel:
Ich habe Qt bereits früher als „cross-platform framework“ bezeichnet. Was bedeutet das? Ganz einfach: Cross-Platform-Software bedeutet, dass Anwendungen auf vielen Plattformen laufen können, ohne dass die zugrundeliegende Technologie geändert werden muss. Schauen wir uns an, auf welchen Plattformen Qt eingesetzt werden kann.
Die ersten Plattformen, die einem einfallen, sind natürlich Desktop-Betriebssysteme. Qt ermöglicht die Entwicklung von Anwendungen für alle wichtigen Desktopsysteme, also Microsoft Windows, macOS (früher OS X) und Linux.
Eine der großen Stärken von Qt auf dem Desktop ist die Möglichkeit, ansprechende und reaktionsschnelle grafische Benutzeroberflächen (GUIs) zu erstellen. Es gibt eine breite Palette an UI-Komponenten und Widgets, die an individuelle Design- und Branding-Anforderungen angepasst werden können. Zusätzlich unterstützt Qt hochauflösende Displays, sodass Anwendungen auf modernen Bildschirmen gestochen scharf und professionell aussehen.
Schau dir an, wie wir Desktop-Projekte umsetzen.
Da ich Linux erwähnt habe, ist sicherlich auch Embedded-Entwicklung ins Gespräch gekommen. Keine Überraschung: Qt unterstützt ebenfalls die Entwicklung für Embedded Linux und weitere Plattformen 😉.
Qt ist hervorragend für die Embedded-Entwicklung geeignet und bietet spezielle Tools für ressourcenbeschränkte Systeme. Eingebettete Systeme sind oft spezialisierte Geräte mit eingeschränkten Ressourcen, und die Leichtgewichtigkeit von Qt macht es zu einer großartigen Wahl für grafische Oberflächen und Anwendungen in diesem Bereich. Es gibt sogar ein spezielles Modul – Qt for MCUs – für weniger leistungsstarke Embedded-Geräte.
Bei Scythe arbeiten wir an vielen Projekten für anspruchsvolle Branchen wie Medizintechnik, Industrieautomation, IoT und Automotive. Der Schwerpunkt liegt dabei häufig auf HMI-Entwicklung (Human Machine Interface). Aber Qt kann noch mehr: Neben schönen Benutzeroberflächen ermöglicht es auch die Implementierung der gesamten Backend-Logik.
Qt unterstützt verschiedene Embedded-Plattformen wie Raspberry Pi, NVP-, Qualcomm- und ST-Geräte und viele weitere, und deckt Betriebssysteme wie Linux, Yocto und QNX ab. Damit lassen sich eine Vielzahl an Hardwareplattformen bedienen, ohne den Code für jedes einzelne Gerät anpassen zu müssen.
„Und was ist mit mobilen Geräten wie meinem Smartphone?“ – auch hier punktet Qt. Qt-Software läuft auf Android- und iOS-Geräten. Es handelt sich wirklich um ein plattformübergreifendes Entwicklungsframework.
Eine der größten Stärken von Qt im mobilen Bereich ist, dass es native Benutzererfahrungen ermöglicht. Mit Qt lassen sich mobile Benutzeroberflächen erstellen, die sich wie native Apps anfühlen und aussehen. Darüber hinaus unterstützt Qt spezifische Funktionen und Dienste wie Gerätesensoren, GPS und Kamerazugriff.
Qt wäre nicht das, was es heute ist, ohne sein starkes GUI-Programmiersystem. Egal, ob du eine klassische Desktop-Anwendung oder eine moderne Mobile-App entwickelst: Qt bietet eine umfangreiche Bibliothek an Widgets, die leistungsstark, anpassbar und erweiterbar sind.
Von einfachen Buttons und Slidern bis hin zu komplexen Layouts und Ansichten – die eingebauten UI-Komponenten helfen dir, die Entwicklung zu beschleunigen und einheitliche Benutzererfahrungen zu schaffen. Und das Beste daran? Du kannst das Aussehen dieser Komponenten perfekt an dein Branding oder dein Designsystem anpassen – sei es mit Qt Style Sheets oder den Styling-Möglichkeiten von QML. Egal, ob du pixelgenaue Designs anstrebst oder einfach nur etwas Funktionierendes brauchst – Qt hat die passenden Werkzeuge dafür.
Wenn du planst, umfangreiche Grafiken oder Multimedia-Inhalte in deine Anwendung zu integrieren, hast du Glück: Qt bietet ein starkes Set an Tools, um 2D-/3D-Grafiken, Animationen, Videowiedergabe und Audiounterstützung einzubinden.
Egal, ob du ein Dashboard für Datenvisualisierung oder ein interaktives Kiosk-System entwickelst – dank Qt Quick Scene Graph, OpenGL- und Vulkan-Unterstützung sowie optionaler Hardwarebeschleunigung liefert Qt hohe Leistung auf einer Vielzahl von Geräten. Für Anwendungen im Medienbereich bietet Qt Multimedia umfassende Funktionen für Video, Audio und Kamera-Zugriff.
Moderne Anwendungen sind selten komplett offline – und Qt ist darauf bestens vorbereitet. Mit seinen leistungsstarken Netzwerkmodulen macht Qt es einfach, vernetzte Anwendungen zu erstellen – egal, ob du HTTP-APIs, TCP-/UDP-Sockets, OPC UA, MQTT, gRPC, WebSockets oder andere Technologien nutzt!
Das Framework deckt sowohl Low-Level- als auch High-Level-Netzwerkbedürfnisse ab: vom Abrufen von Daten von einem Webserver über die Verbindung lokaler Geräte bis hin zur Real-Time-Kommunikation. Durch Qt’s asynchrone Arbeitsweise und das Signal-Slot-System bleiben deine Anwendungen dabei stets reaktionsschnell.
Beim Erstellen von GUIs mit Qt solltest du zuerst entscheiden, welchen Ansatz du wählst – es gibt zwei Möglichkeiten: Qt Quick (QML) oder Qt Widgets. Beide sind Qt-Module, unterscheiden sich aber etwas in ihrer Funktionsweise.
Qt Widgets ermöglichen es dir, vorkonfigurierte grafische Elemente (sogenannte Widgets) wie Fenster, Textfelder oder Buttons zu verwenden. Diese Lösung wurde als erstes eingeführt, hatte aber einige Einschränkungen – insbesondere bei der Erstellung moderner Benutzeroberflächen mit vielen Animationen. Die GUI-Entwicklung mit Qt Widgets erfolgt in C++ und mithilfe des WYSIWYG-Editors Qt Designer.
Deshalb entschied sich The Qt Company für eine neue Lösung: das Modul Qt Quick, das ebenfalls die Erstellung grafischer Benutzeroberflächen ermöglicht, jedoch auf eine modernere Art. Bei Qt Quick wird die Benutzeroberfläche deklarativ mit der QML-Sprache entwickelt (Dateien mit der Endung .qml). Die Nutzung ist einfach und erlaubt eine bessere Trennung von Frontend (QML) und Backend (C++ oder Python). Zusätzlich unterstützt QML auch JavaScript-Funktionen.
Da Qt ein echtes Cross-Platform-Framework ist, kannst du eine Benutzeroberfläche entwickeln, die auf Windows, macOS und Linux gleichermaßen funktioniert – und dabei auf jeder Plattform nativ wirkt! Diese Eigenschaft steht sowohl für Qt Widgets als auch für Qt Quick zur Verfügung.
Für Mikrocontroller (MCUs) hat Qt zudem eine spezielle Variante entwickelt: Qt Quick Ultralite. Mehr darüber findest du in unserem Blogbeitrag First Steps with Qt for MCUs.
Falls du tiefer in die Unterschiede zwischen Qt Quick und Qt Widgets eintauchen oder mehr über GUI-Entwicklung erfahren möchtest, empfehle ich dir unseren detaillierten Vergleich zwischen QML und Qt Widgets.
Uff, ich glaube, ich habe zusammengefasst, was Qt alles bietet. Doch bloß über das Framework Bescheid zu wissen reicht nicht – man muss auch den Wunsch haben, es einzusetzen. Deshalb möchte ich noch die wichtigsten Vor- und Nachteile von Qt aufzeigen, um dir die Entscheidung zu erleichtern. Falls du lieber ein Video bevorzugst, schau dir unsere Episode des Qt-QML-Tutorials an!
Beginnen wir mit den Vorteilen: Der erste Punkt ist die Reife des Frameworks. Qt hat eine lange Geschichte, in der es kontinuierlich verbessert wurde – durch die Entwickler selbst sowie durch die Community. Das ist besonders wichtig in Branchen, in denen Stabilität und Qualität wichtiger sind als kurzfristige Trends und neue (oft überbewertete) Frameworks.
Ein weiterer Vorteil ist die Vielseitigkeit und Effizienz von Qt. Damit lassen sich Funktionen aus unterschiedlichsten Bereichen und Branchen implementieren – und das mit hoher Leistung und guter Optimierung. Das gilt sowohl für komplexe Backend-Logik als auch für moderne grafische Benutzeroberflächen.
Ein letzter Vorteil, der vielleicht nicht sofort ins Auge sticht, den ich aber sehr schätze, ist die Open-Source-Natur von Qt. Dadurch kann man genau nachvollziehen, wie Lösungen implementiert wurden, den Quellcode einsehen und Qt bei Bedarf sogar selbst kompilieren!
Damit das Ganze nicht zu einseitig wirkt, möchte ich auch auf einige Nachteile eingehen. Der erste ist die relativ hohe Einstiegshürde: Um Qt effektiv zu nutzen, muss man zumindest Grundkenntnisse in C++ besitzen – einer Sprache, die allgemein als komplex gilt. Zwar sind viele Qt-Funktionalitäten auch über Python verfügbar, aber C++ bleibt die Hauptsprache.
Ein weiterer Nachteil betrifft einige der Qt-Tools. Beispielsweise ist Qt Creator nicht ganz so ausgereift wie manche Konkurrenz-IDEs – auch wenn es mit jedem Update besser wird. Und Qt Design Studio ist aus meiner Sicht weder perfekt für Entwickler noch für Designer geeignet (die Qualität des generierten Codes ist verbesserungswürdig).
Der gravierendste Nachteil ist jedoch das Lizenzmodell von Qt. Zwar sind die meisten Module unter Open-Source-Lizenzen verfügbar, aber bestimmte Module (z. B. Qt Charts für Diagramme) erfordern eine kostenpflichtige kommerzielle Lizenz – und die ist nicht gerade günstig. Zudem ist die Lizenzstruktur recht komplex und in vielen Fällen unklar. Trotzdem: Man kann Qt weiterhin kostenlos nutzen und damit Geld verdienen, solange man die Bedingungen der LGPLv3-Lizenz erfüllt. Weitere Infos findest du auf unserer Qt-Lizenzseite.
Bei Scythe Studio ist Qt die Haupttechnologie, die wir bei Projekten für unsere Kunden einsetzen. Deshalb dachte ich, es wäre interessant, einige Beispiele für Anwendungen zu zeigen, die wir erfolgreich mit Qt realisiert haben.
Das erste Beispiel stammt aus der Automobilbranche. Wir haben für einen Kunden gearbeitet, der innovative Elektrofahrzeuge mit einem ausgefeilten Cockpit entwickelte.
Die von uns entwickelte Anwendung lief im Fahrzeugcockpit und wurde über Touchpads am Lenkrad gesteuert. Wir haben typische Funktionen moderner Fahrzeuge implementiert: Tacho, Navigation, Steuerpanels für Fahrzeugeinstellungen und die komplette IVI-Schnittstelle. Mehr Details findest du in unserer Qt Automotive Cockpit Fallstudie.
Nun wechseln wir in eine andere Branche: die Medizin. Eines unserer Projekte war eine Anwendung zur Planung und Durchführung von Wirbelsäulenoperationen. Dank Qt konnten wir ein leistungsfähiges medizinisches GUI entwickeln.
Eine der Hauptanforderungen war die Unterstützung des DICOM-Dateiformats (siehe: Wie entwickelt man DICOM-Software für medizinische Bildgebung) – dem Standardformat für CT- und Röntgenbilder. Dieses Projekt ermöglichte uns, tiefer in die Welt der modernen Medizintechnik einzutauchen 👨⚕️.
Ein weiteres Projekt im Medizinbereich war ein System zur Überwachung der Atmung von Patienten im Krankenhausbett. Die Messergebnisse wurden auf einem Bildschirm direkt neben dem Bett angezeigt, sodass Ärzte und Pflegepersonal die Vitalparameter in Echtzeit verfolgen konnten.
Ich war zwar nicht persönlich an diesem Projekt beteiligt, aber als die Kollegen zeigten, wie das System funktioniert – es war wirklich beeindruckend!
Das letzte Projekt, das ich erwähnen möchte (ebenfalls aus dem medizinischen Bereich), betrifft ein kleines Gerät für Schnellbluttests. Dieses Gerät war kaum größer als eine Kokosnuss 🥥 und wurde komplett über eine mobile App gesteuert.
Da das Gerät keine eigenen Knöpfe oder Bedienfelder hatte, erfolgte die gesamte Steuerung über das Smartphone. Ein tolles Beispiel, wie man verschiedene technische Lösungen miteinander kombinieren kann!
So klein – und doch so leistungsfähig!
Wie du siehst, stammen viele unserer Projekte aus der Medizintechnik. Falls du zufällig aus diesem Bereich kommst, schau dir gern unsere Seite zur medizinischen Softwareentwicklung an.
Damit wir nicht nur unsere eigenen Projekte präsentieren 😂, möchte ich auch einige bekannte Unternehmen und Anwendungen erwähnen, die Qt erfolgreich einsetzen.
Qt hat sich besonders in der Automobilindustrie etabliert, unter anderem bei Unternehmen wie Mercedes-Benz.
Mercedes verwendet Qt, um schlanke und einheitliche Infotainment-Systeme und Fahrzeugbenutzeroberflächen zu entwickeln. Dank Qt’s plattformübergreifender Fähigkeiten können diese Systeme konsistente, benutzerfreundliche Erfahrungen in verschiedenen Fahrzeugmodellen und auf unterschiedlichen Betriebssystemen bieten. Das spart Entwicklungszeit und unterstützt den hohen Innovationsanspruch der Marke.
Auch Autodesk Maya – eine bekannte 3D-Animations- und Modellierungssoftware – setzt auf Qt. Maya verwendet Qt, um eine intuitive und konsistente Benutzeroberfläche für seine komplexen Werkzeuge zu schaffen.
Dank Qt kann Autodesk auf verschiedenen Plattformen eine gleichbleibende Nutzererfahrung bieten, wodurch Entwicklung und Wartung vereinfacht werden. Für 3D-Artists und Animator:innen bedeutet das ein optimierter, benutzerfreundlicher Workflow.
Das bekannte Open-Source-Desktop-Umfeld KDE Plasma basiert ebenfalls auf Qt. Diese enge Verbindung ermöglicht es KDE, eine flexible und benutzerfreundliche Oberfläche für Linux- und Unix-basierte Systeme zu schaffen.
Die Open-Source-Philosophie von Qt passt perfekt zu KDE’s Zielen, Innovation und Anpassungsfähigkeit in der freien Software-Community zu fördern. Dank dieser Zusammenarbeit profitieren Linux-Nutzer von einem ansprechenden, modernen Desktop-Erlebnis.
Ich bin sicher, dass The Qt Company der KDE-Community und der gesamten Open-Source-Welt viel zu verdanken hat.
Wie du selbst sehen kannst, ist Qt eine äußerst spannende Technologie. Falls ich dich bereits dafür begeistern konnte, aber du noch keinerlei Erfahrung damit hast – kein Problem! Die klügsten Köpfe von Scythe Studio haben ein eigenes YouTube-Tutorial speziell für Einsteiger vorbereitet.
Ich empfehle dir herzlich, dort reinzuschauen. Und wenn du das Tutorial gesehen hast, freuen wir uns über dein Feedback – jeder Kommentar ist für uns von unschätzbarem Wert! Wenn du noch tiefer einsteigen möchtest, findest du auf unserem Blog auch weiterführende Insider-Artikel und Expertentipps zu Qt.
Dieser Blogbeitrag war vermutlich der längste, den ich je geschrieben habe – aber das Thema war einfach riesig. Bei Scythe Studio arbeiten wir täglich intensiv mit Qt und es ist wirklich schwer, alle wichtigen Informationen in nur einen einzigen Beitrag zu packen 😵.
Ich hoffe, ich konnte dein Interesse an der Qt-Cross-Platform-Entwicklung wecken und deine wichtigsten Fragen beantworten. Bleib dran – es wird definitiv bald noch weitere Beiträge geben!
Kommen wir zur Sache: Es ist eine Herausforderung, Top-Qt-QML-Entwickler zu finden. Helfen Sie sich selbst und starten Sie die Zusammenarbeit mit Scythe Studio – echten Experten im Qt C++ Framework.
Entdecken Sie unsere Fähigkeiten!Qt und QML bieten ein leistungsstarkes Framework zur Entwicklung moderner, plattformübergreifender Anwendungen mit einer eleganten und reaktionsschnellen Benutzeroberfläche. Während Qt […]
Die Wahl des besten Frameworks zur Entwicklung einer Anwendung ist eine anspruchsvolle Aufgabe. Dennoch ist dies eine entscheidende Entscheidung, die […]
Die Entwicklung von Software für Medizinprodukte erfordert rigorose Tests, um die Patientensicherheit und die Einhaltung gesetzlicher Vorschriften zu gewährleisten. Solche […]