Auf dieser Seite

Plattformintegration

Die größte Stärke von Qt als plattformübergreifendes Toolkit für die Anwendungsentwicklung besteht darin, dass der Anwendungscode nicht für jede Zielplattform doppelt geschrieben werden muss.

Zwar löst Qt viele der typischen Aufgaben beim Schreiben einer Anwendung, doch gibt es immer wieder Sonderfälle, die Qt nicht abdecken kann, oder in denen es sinnvoller ist, eine Funktion auf Basis der plattformspezifischen APIs oder eines anderen Toolkits zu entwickeln.

Um diese Anwendungsfälle zu unterstützen und gleichzeitig Qt die Abwicklung des Großteils der Anwendungslogik zu überlassen, bietet Qt eine breite Palette an APIs zur Plattformintegration – von einfachen Typkonvertierungen bis hin zu plattformspezifischen nativen Schnittstellen.

Typkonvertierungen

Viele der grundlegenden Datentypen von Qt, wie beispielsweise ` QString`, ` QPoint` oder ` QImage`, bieten Konvertierungen zu und von den entsprechenden nativen Typen.

Beispiel: So rufen Sie den Benutzernamen des aktuellen Benutzers auf Apple-Plattformen ab:

NSProcessInfo *processInfo = NSProcessInfo.processInfo;
QString userName = QString::fromNSString(processInfo.userName)

Eine vollständige Liste aller Typkonvertierungen finden Sie in der Übersicht zu Typkonvertierungen.

Integration mit anderen UI-Toolkits

Qt bietet eine umfassende Sammlung plattformübergreifender UI-Komponenten und Steuerelemente, die den Großteil der Anforderungen bei der Anwendungsentwicklung abdecken. Es gibt jedoch Situationen, in denen eine Integration von Qt mit anderen UI-Toolkits notwendig oder vorteilhaft ist.

Ein Szenario ist die Einbettung von Qt-Benutzeroberflächen in Anwendungen, die mit anderen Toolkits erstellt wurden, beispielsweise bei der Implementierung von Plugins für eine bestehende Anwendung oder bei der schrittweisen Einführung von Qt in eine bestehende Codebasis.

Ein weiteres Szenario ist das Einbinden nativer oder von Drittanbietern stammender UI-Elemente in eine Qt-Anwendung, beispielsweise um auf spezielle Steuerelemente zuzugreifen, die Qt nicht bereitstellt.

Unter „Kombination von Qt mit anderen UI-Toolkits “ finden Sie einen detaillierten Einblick, wie Qt diese beiden Anwendungsfälle unterstützt.

Ereignisbehandlung

Die meisten Anwendungsfälle der Ereignisbehandlung in Qt werden durch die plattformübergreifende Ereignisübermittlung über ` QWindow::event()` und ähnliche Funktionen oder über ` QObject::installEventFilter()` ausreichend abgedeckt.

In Fällen, in denen dies nicht ausreicht, bietet Qt Zugriff auf die Übermittlung nativer Ereignisse. Ein globaler Ereignisfilter, der alle nativen Ereignisse empfängt, kann mithilfe von ` QCoreApplication::installNativeEventFilter()` eingerichtet werden, während native Ereignisse pro Fenster in ` QWindow::nativeEvent()` verarbeitet werden können.

Hinweis: Ein Eingriff in den nativen Ereignisfluss kann Qt in einen inkonsistenten Zustand versetzen. Diese APIs sollten in erster Linie dazu dienen, die bestehende Ereignisbehandlung von Qt zu ergänzen, beispielsweise für Ereignisse, die Qt noch nicht verarbeitet.

Native Schnittstellen

Plattformspezifische Funktionen, die von den oben genannten APIs nicht abgedeckt werden, werden über den allgemeineren Mechanismus der nativen Schnittstellen in Qt abgewickelt. Die Schnittstellen bieten Zugriff auf native oder plattformspezifische APIs der Klassen, die sie erweitern.

Die Schnittstellen befinden sich im Namespace „ QNativeInterface “ und decken Anwendungsfälle wie den Zugriff auf zugrunde liegende native Handles, die Übernahme bestehender nativer Handles oder die Bereitstellung plattformspezifischer APIs ab.

Um beispielsweise unter macOS über die native Schnittstelle „ QNativeInterface::QCocoaGLContext “ auf den zugrunde liegenden „NSOpenGLContext“ eines „ QOpenGLContext “ zuzugreifen:

using namespace QNativeInterface;
if (auto *cocoaGLContext = glContext->nativeInterface<QCocoaGLContext>())
    [cocoaGLContext->nativeContext() makeCurrentContext];

Eine vollständige Liste aller nativen Schnittstellen finden Sie in der Übersicht über native Schnittstellen.

Warnung: Für die APIs der nativen Schnittstellengibt es keine Garantien hinsichtlich der Quell- oder Binärkompatibilität. Das bedeutet, dass eine Anwendung, die diese Schnittstellen nutzt, nur mit der Qt-Version funktioniert, für die sie entwickelt wurde.

Plattformunterstützung

Zusätzlich zu den APIs für Anwendungsentwickler stellt Qt auch Schnittstellen zur Plattform bereit, um die zugrunde liegenden Implementierungen der plattformübergreifenden Bausteine in Qt bereitzustellen.

Beispiele hierfür sind die Abstraktionen des Ereignis-Dispatchers in Qt Core sowie die Abstraktionen der Rendering-Hardware in RHI.

Die wichtigste Abstraktionsschicht ist hier die Qt Platform Abstraction, kurz QPA, die sich mit der Integration in das Fenstersystem und den damit verbundenen Anwendungsfällen befasst.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.