![Portierung von Qt 5 auf Qt 6 – Die 3 wichtigsten Gründe und Schritte main image](/_ipx/w_1400&f_webp/cms/2025/02/Porting-from-Qt-5-to-Qt-6-DE.jpg)
Portierung von Qt 5 auf Qt 6 – Die 3 wichtigsten Gründe und Schritte
Die Veröffentlichung von Qt 6 stellt einen bedeutenden Meilenstein dar und bietet zahlreiche neue Funktionen und Verbesserungen gegenüber Qt 5. […]
Wir behandeln Qt-bezogene Themen auf unserem Blog, aber erst kürzlich ist uns aufgefallen, dass viele unserer Leser vielleicht gar nicht wissen, was Qt überhaupt ist 🧐.
Deshalb habe ich mich entschieden, diesen Beitrag zu schreiben, der als Antwort auf die am häufigsten gestellten Fragen dient: Was genau ist Qt-Entwicklung? Warum es verwenden und wie man damit GUIs erstellt? Ich werde versuchen, all diese Fragen in diesem Beitrag zu beantworten. Sobald du ihn gelesen hast, wirst du nicht mehr mit diesen Fragen beschäftigt sein.
Falls du bereits mit Qt vertraut bist, lade ich dich trotzdem ein, weiterzulesen, denn du kannst immer etwas Neues lernen. Wenn du jedoch Fragen hast, die dich beschäftigen und auf die du keine Antwort finden kannst oder du Unterstützung in der Qt-, QML- oder C++-Softwareentwicklung benötigst, dann schaue auch auf unserer Seite für Qt-Entwicklungsdienste vorbei.
Also ohne weitere Verzögerung, lass uns loslegen!
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 grafischen Benutzeroberflächen. Das Qt-Framework wurde ursprünglich von Trolltech, einem norwegischen Softwareunternehmen, Mitte der 1990er Jahre entwickelt. 2008 erwarb Nokia Trolltech und setzte die Unterstützung und Entwicklung von Qt fort.
Im Anschluss daran wurde Qt von verschiedenen Branchen übernommen und Open-Source gemacht (heute wird das Qt-Framework von The Qt Company betrieben). Ich werde in diesem Artikel nicht zu sehr ins Detail über die Geschichte der Entwicklung des Frameworks gehen, aber diejenigen, die neugierig sind, können sich die Grafik unten ansehen.
Qt arbeitet hauptsächlich mit der Programmiersprache C++, was es zu einer bevorzugten Wahl für Entwickler macht, die mit dieser Sprache arbeiten. Darüber hinaus unterstützt Qt eine andere Programmiersprache: Python durch PySide. Es gibt auch Sprachbindungen für Rust, Java und andere Sprachen.
Die Open-Source-Natur des Qt-Projekts fördert Zusammenarbeit und Innovation. Entwickler können auf den Quellcode zugreifen, Fehler beheben und neue Funktionen hinzufügen, was zur kontinuierlichen Verbesserung des Frameworks beiträgt. Wenn du daran interessiert bist, beizutragen, kannst du immer mit Unterstützung vom Qt-Team rechnen.
Auch wir bei Scythe Studio versuchen, unseren Beitrag zu leisten, indem wir an der Qt-Entwicklung arbeiten 💪 (sowohl als Qt-Mitwirkende als auch in offizieller Zusammenarbeit mit The Qt Company).
Ich habe bereits mehrfach geschrieben, dass Qt ein „Framework“ ist, aber was meine ich wirklich damit? Schließlich habe ich beim Schreiben einer Anwendung in C++ viele Klassen und Funktionen zur Verfügung, also warum brauche ich mehr? Nun, genau, weil der Appetit wächst, während man isst 😉.
Mehr als einmal, wenn du an einem Projekt gearbeitet hast, kam dir der Gedanke, eine coole Funktionalität hinzuzufügen: sei es eine Datenbank, vielleicht eine Netzwerklösung oder eine ausgeklügelte Benutzeroberfläche. Allerdings ist die Verwendung von reinem C++ oft schwierig oder nahezu unmöglich, weshalb Qt zur Hilfe kommt! Lies weiter, um mehr über seine Möglichkeiten zu erfahren.
In der Grafik war das letzte Jahr 2015, doch das Abenteuer mit Qt geht auch heute weiter! Quelle
Ich habe Qt früher als „cross-platform framework“ beschrieben. Was bedeutet das? Am einfachsten ausgedrückt bedeutet cross-platform Software, dass Anwendungen auf vielen Plattformen laufen können, ohne dass die Technologie geändert werden muss. Schauen wir uns also an, auf welchen Plattformen wir Qt verwenden können.
Die ersten Plattformen, die einem in den Sinn kommen, sind natürlich Desktop-Systeme. Qt ermöglicht es, Anwendungen für alle gängigen Desktop-Betriebssysteme zu schreiben, d.h. Microsoft Windows, macOS (früher OS X) und Linux.
Eine der bemerkenswerten Stärken von Qt auf Desktops ist die Fähigkeit, visuell ansprechende und reaktionsschnelle grafische Benutzeroberflächen (GUIs) zu erstellen. Es bietet eine breite Palette von UI-Komponenten und Widgets, die an die spezifischen Design- und Branding-Anforderungen der Anwendung angepasst werden können. Qt bietet auch Unterstützung für hochauflösende Displays, wodurch Anwendungen auf modernen Bildschirmen scharf und professionell aussehen.
Siehe wie wir mit Desktop-Projekten umgehen.
Da ich Linux erwähnt habe, ist das Thema Embedded-Geräte wahrscheinlich vielen von euch aufgefallen. Nun, auch hier keine Überraschung, Qt ermöglicht auch die Programmierung für Embedded Linux und mehr 😉
Qt ist ein wertvolles Framework für die Entwicklung von Embedded-Systemen, das eine Reihe von Funktionen und Tools speziell für diesen Bereich bietet. Embedded-Systeme sind spezialisierte, oft ressourcenbeschränkte Geräte, und die Vielseitigkeit von Qt macht es zu einer überzeugenden Wahl für die Erstellung von grafischen Schnittstellen und Anwendungen in diesem Kontext. Die leichte Struktur von Qt ermöglicht es, auf Embedded-Hardware mit begrenzter Rechenleistung und Speicher effizient zu arbeiten. Es gibt sogar ein spezielles Qt-Modul namens Qt for MCUs (Microcontroller) für weniger leistungsfähige Embedded-Geräte.
Qt bietet auch Unterstützung für verschiedene Embedded-Plattformen wie Raspberry Pi, NVP-Geräte, Qualcomm-Geräte, ST-Geräte und mehr von anderen Herstellern. All das mit verschiedenen Betriebssystemschichten – Linux, Yocyo, QNX und einige andere. Das stellt sicher, dass Entwickler eine breite Palette von Embedded-Hardware-Plattformen ansprechen können, ohne den Code für jedes spezifische Gerät neu schreiben zu müssen.
„Was ist mit mobilen Geräten wie meinem Smartphone?“ – auch hier lässt Qt nicht nach. Die Qt-Software kann sowohl auf Android- als auch auf iOS-Geräten laufen. Es ist wirklich ein Framework für plattformübergreifende Entwicklung.
Eine der herausragenden Eigenschaften von Qt im mobilen Bereich ist die Fähigkeit, native Benutzererlebnisse zu bieten. Qt ermöglicht es Entwicklern, reaktionsschnelle und visuell ansprechende mobile Benutzeroberflächen zu entwerfen, die nativen Apps ähneln und die Benutzererfahrung verbessern. Wenn nötig, bietet Qt auch Unterstützung für spezifische Funktionen und Dienste, wie Geräte-Sensoren, GPS und Kamerazugriff.
Wie bereits erwähnt, ist Qt ein Werkzeugsatz, oder genauer gesagt, Module. Jedes Modul in Qt hilft uns, eine spezifische Funktionalität zu erreichen (zum Beispiel hilft uns das Qt SQL-Modul bei Datenbankoperationen).
Die wichtigsten Module wurden in der Kategorie „Essentials“ zusammengefasst, die die gängigsten Lösungen implementieren hilft, wie GUI, Multimedia, Netzwerk, Qt-Testklassen oder Sensorsupport. Diese Module werden auf allen Plattformen gleichermaßen unterstützt.
Auf der anderen Seite, wenn wir nach „exotischeren“ Funktionen suchen, können Module aus der „Add-ons“-Kategorie helfen. Die folgende Grafik zeigt die betreffenden Module:
Wir können sehen, dass Qt wie ein Schweizer Taschenmesser ist, es gibt ein Werkzeug für alles!
Die Grafik mit den Modulen zeigt uns auch die Plattformen, auf denen Qt läuft (wir haben dies bereits besprochen), aber auf der rechten Seite sehen wir auch den Bereich „Entwicklungstools“. Ja, die Entwickler von Qt haben sich nicht nur auf das Schreiben des Frameworks beschränkt, sondern stellen uns auch eine Vielzahl von Tools zur Verfügung, die uns bei der Anwendungsentwicklung helfen.
Das bekannteste ist Qt Creator – eine integrierte Entwicklungsumgebung (IDE), die speziell für die Entwicklung von Anwendungen mit dem Qt-Framework entwickelt wurde. Sie bietet eine Reihe von Werkzeugen und Funktionen, die speziell auf die Qt-Anwendungsentwicklung zugeschnitten sind und den Prozess effizienter und reibungsloser gestalten.
Hier sind einige der Hauptmerkmale von Qt Creator:
Cross-Platform-Unterstützung: Qt Creator ist auf mehreren Plattformen verfügbar, darunter Windows, macOS (OS X) und verschiedene Linux-Distributionen, sodass der Entwicklungsprozess optimiert wird.
Code-Editor: Qt Creator verfügt über einen leistungsstarken Code-Editor mit Funktionen wie Syntaxhervorhebung, Codevervollständigung und Code-Navigation, die es Entwicklern erleichtern, Code zu schreiben und zu verwalten.
Integrierter Debugger und Profiler: Es enthält einen eingebauten Debugger, der den Prozess der Fehlersuche und Fehlerbehebung im Code vereinfacht.
… und noch vieles mehr!
Ich benutze Qt Creator täglich und er wird mit jedem Update besser. Für Anfänger empfehle ich den „Beispiel“-Tab, der Anwendungsbeispiele zeigt, von denen wir lernen können.
Andere Tools umfassen zum Beispiel: Qt Linguist für die einfache Erstellung von Übersetzungen für Anwendungen, Qt Design Studio und Qt 3D Studio für die Erstellung von 2D- und 3D-Benutzeroberflächenelementen sowie Qt Assistant für die Dokumentationserstellung.
Im Kern wuchs das Qt-Framework als Toolkit, das speziell für die Entwicklung grafischer Benutzeroberflächen entwickelt wurde, und genau das ist immer noch seine wichtigste Funktion. Und es muss gesagt werden, dass Qt dies sehr gut macht! Eine in Qt geschriebene GUI lässt sich sehr einfach anpassen und bietet uns eine Fülle von Möglichkeiten.
Wenn Sie die GUI in Qt selbst schreiben, sollten Sie mit der Wahl eines Ansatzes beginnen. Und es gibt zwei. Entweder Qt Quick (QML) oder Qt Widgets. Beide sind Qt-Module, aber sie sind ein wenig unterschiedlich.
Qt Widgets ermöglicht es Ihnen, vorgefertigte GUI-Elemente (sogenannte Widgets) wie Fenster, Textfelder, Schaltflächen usw. zu verwenden. Dies ist eine Lösung, die zuerst implementiert wurde, aber mehrere Nachteile hatte (z.B. Schwierigkeiten bei der Erstellung einer modernen UI mit einer großen Anzahl von Animationen usw.). Die Erstellung von UIs mit Qt Widgets basiert auf der C++-Sprache und dem WYSIWYG-Editor – Qt Designer.
Daher entschloss sich die Qt Company, eine neue Lösung zu implementieren, das Qt Quick-Modul, das im Wesentlichen dasselbe wie Qt Widgets ermöglicht (auch die Erstellung von UI-Elementen), jedoch moderner ist und besser an moderne Anforderungen angepasst wurde. Wenn Sie die GUI mit Qt Quick schreiben, wird sie mit der deklarierten QML-Sprache geschrieben (mit einer QML-Datei im .qml-Format). Es ist einfach zu verwenden und sorgt für eine bessere Trennung von Frontend (QML) und Backend (C++/Python). QML unterstützt auch JavaScript-Funktionen.
Da Qt ein plattformübergreifendes Framework ist, können Sie sich darauf konzentrieren, den Code einmal für verschiedene Plattformen zu schreiben, und er kann gleichzeitig eine native Benutzeroberfläche auf Windows, macOS (OS X) und Linux haben! Diese Funktion ist sowohl für Qt Widgets als auch für Qt Quick verfügbar.
Die Experten der Qt Company haben auch etwas für Mikrocontroller entwickelt – Qt Quick Ultralite. Mehr darüber können Sie in unserem Blogpost zu Erste Schritte mit Qt für MCUs lesen.
Wenn Sie die Unterschiede zwischen Qt Quick und Qt Widgets weiter erkunden möchten oder sich mehr mit der GUI-Entwicklung vertraut machen wollen, empfehle ich Ihnen, unseren detaillierten Vergleich zwischen QML und Qt Widgets zu lesen.
Uff, ich denke, ich habe zusammengefasst, was Qt bietet. Aber nur zu wissen, was das Framework ist, reicht nicht aus, weil Sie es immer noch verwenden wollen. Deshalb werde ich die Vor- und Nachteile von Qt besprechen, um Ihre Entscheidung zu erleichtern. Wenn Sie die Videoform eines solchen Vergleichs bevorzugen, empfehle ich Ihnen, unsere Episode des Qt QML-Tutorials anzusehen.
Lassen Sie mich mit den Vorteilen beginnen. Der erste, den ich bereits erwähnt habe, ist Reife. Qt ist ein Framework mit einer langen Geschichte, sodass die Autoren (und die Community) viel Zeit hatten, es zu verbessern. Dies ist besonders wichtig in Branchen, in denen die Qualität und Stabilität einer Anwendung wichtiger sind als das Verfolgen des neuesten (oft überbewerteten) Frameworks.
Ein weiterer Vorteil ist Vielseitigkeit und Effizienz. Dank Qt können wir Funktionen aus vielen Bereichen und verschiedenen Industrien umsetzen und sind dennoch sicher, dass alles sehr effizient und gut optimiert sein wird. Dies gilt nicht nur für die fortgeschrittene Backend-Logik, sondern auch für die Erstellung von modernen grafischen Benutzeroberflächen.
Ein letzter Vorteil, der unbedeutend erscheinen mag, aber den ich sehr schätze, ist die Open-Source-Natur von Qt. Dieser Ansatz garantiert, dass wir genau wissen, wie eine Lösung geschrieben ist (wir können uns leicht den Qt-Quellcode ansehen) und, wenn nötig, sogar Qt selbst kompilieren!
Damit es nicht so aussieht, als wäre ich blind auf Qt fixiert und würde nur loben, möchte ich auch einige Nachteile erwähnen. Der erste ist die recht hohe Einstiegshürde. Bei der Verwendung von Qt müssen Sie zumindest die Grundlagen von C++ kennen, was als eine ziemlich schwierige Sprache gilt. Tatsächlich sind die meisten Qt-Objekte, Klassen und das allgemeine Angebot auch in Python verfügbar.
Ein weiterer Nachteil sind einige der mit Qt gelieferten Tools. Zum Beispiel ist Qt Creator nicht so ausgereift wie konkurrierende IDEs für andere Sprachen (aber es wird mit jedem Update besser), und Qt Design Studio ist meiner Meinung nach weder für Designer noch für Entwickler geeignet (die Qualität des generierten Codes lässt viel zu wünschen übrig).
Der letzte Nachteil, den ich für den schwerwiegendsten halte, ist die Lizenzierung von Qt. Die meisten Qt-Module sind unter Open-Source-Lizenzen verfügbar, aber einige von ihnen (zum Beispiel Qt Charts zur Implementierung von Diagrammen) erfordern bereits den Kauf einer kommerziellen Lizenz, die nicht die billigste ist. Die Lizenzierung ist ziemlich kompliziert und in vielen Fällen nicht klar, aber Sie können Qt weiterhin kostenlos nutzen und verdienen, wenn Sie den LGPLv3-Lizenzpflichten entsprechen. Besuchen Sie unsere Website zur Qt-Lizenzierung für Ihr Projekt, um mehr zu erfahren. Die kommerzielle Lizenz ist kein Muss!
Bei Scythe Studio ist Qt die Haupttechnologie, die wir in Projekten für unsere Kunden verwenden. Daher dachte ich, es wäre interessant, einige Beispiele für Qt-Anwendungen zu zeigen, die wir mit Qt abgeschlossen haben.
Das erste Beispiel, das ich erwähnen möchte, ist ein Qt-Projekt, das wir für einen Kunden aus dem Automobilsektor geschrieben haben. Das Unternehmen, mit dem wir zusammenarbeiteten, entwickelte innovative Elektroautos mit einem umfangreichen Steuer-Cockpit.
Die Anwendung lief im Cockpit des Autos und wurde über Touchpads gesteuert, die in das Lenkrad eingebaut waren. Wir implementierten Elemente, die in modernen Autos am häufigsten zu finden sind: Geschwindigkeitsmesser, Navigation, Steuerpanels zur Steuerung von Autooptionen und das gesamte IVI-Cockpit. Wenn Sie mehr lesen möchten, sehen Sie sich bitte unsere Qt Automotive Cockpit Case Study an.
Lassen Sie uns nun zu einer etwas anderen Branche wechseln, nämlich der Medizin. Eines unserer medizinischen Projekte war eine Anwendung, die zur Planung und Durchführung von Wirbelsäulenoperationen verwendet wurde. In diesem Fall konnten wir dank Qt eine Benutzeroberfläche für das medizinische Personal erstellen. In dieser Anwendung mussten wir vor allem die Unterstützung für das DICOM-Dateiformat implementieren, das verwendet wird, um Scans aus der Computertomographie oder Röntgenbilder darzustellen. Es war auch eine Gelegenheit für uns, etwas tiefer in die Welt der modernen Medizin einzutauchen 👨⚕️.
Ein weiteres Qt-Projekt aus demselben Bereich war eine Anwendung zur Überwachung der Atmung eines Patienten, der auf einem Krankenhausbett lag. Diese Anwendung zeigte die Ergebnisse auf einem Bildschirm neben dem Bett des Patienten an, sodass der Arzt oder die Krankenschwester die Parameter des Patienten in Echtzeit überwachen konnte.
Ich war persönlich nicht an dem Projekt beteiligt, aber Sie müssen mir glauben, dass es beeindruckend war, als die Leute, die an dem Projekt arbeiteten, zeigten, wie es funktionierte!
Das letzte Projekt (seltsamerweise auch ein medizinisches), das ich erwähnen wollte, war ein kleines Gerät für Schnellbluttests. Dieses Gerät war nicht größer als eine Kokosnuss 🥥 und wurde über eine mobile App gesteuert! Aufgrund des Fehlens von Tasten oder Bedienfeldern am Gerät wurde alles vom Smartphone des Benutzers gesteuert. Dies zeigt uns auch, wie interessant es ist, verschiedene technische Lösungen zu kombinieren!
Ein kleines Gerät und doch so viel, was es tun kann!
Wie Sie sehen können, stammen viele der Projekte aus dem medizinischen Sektor. Falls Sie zufällig als Fachkraft im medizinischen Bereich lesen, lade ich Sie ein, einen Blick auf unsere Seite über die Entwicklung von Anwendungen für die Medizinbranche zu werfen.
Damit wir nicht nur mit unseren Erfolgen prahlen 😂, habe ich mich auch entschieden, Ihnen einige bekannte Unternehmen oder Anwendungen vorzustellen, die ebenfalls Qt-Software verwenden.
Qt hat sich besonders in der Automobilindustrie einen Namen gemacht, insbesondere bei Unternehmen wie Mercedes-Benz.
Mercedes nutzt Qt, um schlanke und kohärente In-Vehicle Infotainment-Systeme und Schnittstellen zu entwickeln. Die plattformübergreifenden Fähigkeiten von Qt ermöglichen konsistente und benutzerfreundliche Erfahrungen über verschiedene Automodelle und Betriebssysteme hinweg. Diese Vielseitigkeit ermöglicht es Mercedes-Benz, Software effizient zu entwickeln, zu testen und zu implementieren, die mit seinem Ruf für Luxus und Innovation in der Automobilbranche übereinstimmt.
Qt ist auch zu einem wertvollen Asset für Autodesk Maya geworden, eine 3D-Animations- und Modellierungssoftware. Maya verwendet Qt, um eine einheitliche und benutzerfreundliche Oberfläche für seine komplexen 3D-Design- und Animationswerkzeuge zu schaffen. Die plattformübergreifenden Fähigkeiten von Qt gewährleisten eine konsistente Benutzererfahrung auf verschiedenen Betriebssystemen. Diese Flexibilität ermöglicht es Autodesk, die Softwareentwicklung, -tests und -bereitstellung zu optimieren und letztlich die Funktionalität und Benutzerfreundlichkeit von Maya für 3D-Künstler und Animator:innen zu verbessern.
KDE Plasma, eine Open-Source-Desktop-Umgebung, basiert auf Qt. Diese Zusammenarbeit mit Qt ermöglicht es KDE, eine kohärente und benutzerfreundliche Oberfläche für Linux- und Unix-basierte Betriebssysteme zu erstellen. Die Open-Source-Natur von Qt passt perfekt zu KDes Engagement für Open-Source-Software und fördert eine starke Partnerschaft, die Innovation und Anpassung in der Linux-Desktop-Umgebung vorantreibt.
Diese Synergie führt zu einer flexiblen und visuell ansprechenden Benutzeroberfläche für Linux-Nutzer, während gleichzeitig die Open-Source-Werte und die Zusammenarbeit innerhalb der Community gefördert werden. Ich bin sicher, dass The Qt Company viel von KDE und der gesamten freien Software-Community schuldet.
Wie du selbst sehen kannst, ist Qt eine äußerst interessante Technologie. Falls ich dich bereits dazu ermutigen konnte, es zu verwenden, aber du völlig neu in der Materie bist, ist das kein Problem. Die klügsten Köpfe von Scythe Studio haben ein Tutorial auf YouTube vorbereitet, das speziell für komplette Anfänger gedacht ist.
Ich kann dir nur empfehlen, es dir anzusehen. Und wenn du es geschaut hast, zögere nicht, uns Feedback zu hinterlassen – jeder Kommentar ist für uns wertvoll!
Dieser Blogbeitrag war wahrscheinlich der längste, den ich je geschrieben habe, aber das Thema selbst war äußerst umfangreich. Bei Scythe Studio arbeiten wir täglich mit Qt, und es ist wirklich schwierig, alle Informationen darüber in nur einem Beitrag unterzubringen 😵. Ich hoffe jedoch, dass es mir gelungen ist, dein Interesse an der Qt Cross-Platform-Entwicklung zu wecken und deine Fragen zu beantworten. Es wird sicherlich bald einen weiteren Beitrag geben, also bleib dran!
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!Die Veröffentlichung von Qt 6 stellt einen bedeutenden Meilenstein dar und bietet zahlreiche neue Funktionen und Verbesserungen gegenüber Qt 5. […]
Das industrielle Internet der Dinge (IIoT) revolutioniert die Art und Weise, wie Industrien arbeiten, indem es intelligenteres und effizienteres Fertigen […]
Die heutige Medizin wäre nicht an dem Punkt, an dem sie sich befindet, wenn softwarebasierte Lösungen nicht in sie implementiert […]