Auf dieser Seite

Qt Qml Compiler

Das Modul „ Qt Qml -Compiler“ enthält gemeinsame Funktionen, die von QML-Tools wie dem „Qt Quick -Compiler“ und „qmllint“ benötigt werden. Es stellt außerdem das „ QQmlSA “-Framework bereit, mit dem sich die integrierten Analysefunktionen der Tools erweitern lassen.

Verwendung des Moduls

Um die C++-API eines Qt-Moduls zu nutzen, muss eine Verknüpfung mit der Modulbibliothek hergestellt werden, entweder direkt oder über andere Abhängigkeiten. Mehrere Build-Tools bieten hierfür spezielle Unterstützung, darunter CMake und qmake.

Erstellen mit CMake

Verwenden Sie den Befehl „ find_package() “, um die benötigte Modulkomponente im Paket „ Qt6 “ zu finden:

find_package(Qt6 REQUIRED COMPONENTS QmlCompiler)
target_link_libraries(mytarget PRIVATE Qt6::QmlCompiler)

Weitere Details finden Sie in der Übersicht „Erstellen mit CMake “.

Erstellen mit qmake

Um das Modul für die Erstellung mit qmake zu konfigurieren, fügen Sie das Modul als Wert der Variablen „ QT “ in die .pro-Datei des Projekts ein:

QT += QmlCompiler

Verwendung des QQmlSA-Frameworks

Das Compiler-Modul „ Qt Qml “ bietet das „ QQmlSA “-Framework, das Werkzeuge für die statische Analyse von QML-Code bereitstellt. Diese Werkzeuge können dabei helfen, die syntaktische Korrektheit sicherzustellen und vor QML-Anti-Patterns zu warnen.

Das Hinzufügen einer statischen Analyse zu einem QML-Programm erfolgt durch das Schreiben von Plugins. Diese führen eine Reihe von Analyse-Durchläufen über die Elemente und Eigenschaften des QML-Codes durch. Die Durchläufe können bei einem „PassManager“ registriert werden, der die Durchläufe verwaltet und aufgerufen werden kann, um ein Element und dessen untergeordnete Elemente zu analysieren. Ein Durchlauf ist eine Überprüfung auf eine bestimmte Regel oder Bedingung, die an Elementen oder Eigenschaften ausgewertet wird. Ist die Bedingung erfüllt, kann der Durchlauf den Benutzer auf ein identifiziertes Problem im Code hinweisen und möglicherweise sogar eine Korrektur vorschlagen. Er wird als „Pass“ bezeichnet, da die Analyse von Elementen und Eigenschaften dadurch erfolgt, dass eine Reihe von Durchläufen nacheinander auf diese angewendet wird. Jeder Pass sollte nur für die Identifizierung eines bestimmten Problems zuständig sein. Durch die Kombination mehrerer Pässe lassen sich komplexere Analysen durchführen, und zusammen bilden sie ein Plugin. Element-Pässe werden durch zwei Hauptkomponenten definiert, nämlich „ shouldRun() “ und „ run() “. Bei der Durchführung der Analyse führt der Pass-Manager den Pass für jedes Element aus, auf das er stößt, während er die untergeordneten Elemente des Stammelements durchläuft. Wenn für jedes Element die Auswertung von „ shouldRun() “ auf diesem Element den Wert „ true “ zurückgibt, wird „ run() “ darauf ausgeführt.

Passes für Eigenschaften werden bei drei verschiedenen Ereignissen ausgelöst: nämlich wenn die Eigenschaft gebunden wird, wenn sie gelesen wird und wenn in sie geschrieben wird. Diese können durch Überschreiben der Funktionen „ onBinding() “, „ onRead() “ bzw. „ onWrite() “ implementiert werden.

Mit zunehmendem Codeumfang wächst auch die Anzahl der Elemente und Eigenschaften. Die Durchführung der statischen Analyse-Passes für alle Elemente und Eigenschaften kann sehr aufwendig werden. Daher ist es ratsam, bei der Entscheidung, welche Elemente und Eigenschaften analysiert werden sollen, sehr genau vorzugehen. Für Elemente ist die Funktion ` shouldRun() ` als kostengünstige Prüfung gedacht, um festzustellen, ob ` run()` – die die eigentliche Berechnung durchführt – ausgeführt werden soll. Bei den Eigenschaften erfolgt die Auswahl bei der Registrierung der Durchläufe beim Manager. Die Funktion ` registerPropertyPass() ` nimmt die Zeichenfolgen ` moduleName`, ` typeName ` und ` propertyName ` als Argumente entgegen. Diese dienen dazu, die Menge der vom registrierten Durchlauf betroffenen Eigenschaften einzugrenzen.

Beispiele

Das QML-Tutorial zur statischen Analyse zeigt, wie man das „ QQmlSA “-Framework verwendet, um einen benutzerdefinierten „qmllint “-Durchlauf zu erstellen.

Referenz

Lizenzen

Qt Qml Der Compiler ist unter kommerziellen Lizenzen von The Qt Company erhältlich. Darüber hinaus steht er unter der GNU General Public License, Version 3, mit der Qt-GPL-Ausnahme 1.0 zur Verfügung. Weitere Informationen finden Sie unter „Qt-Lizenzierung “.

© 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.