qmlformat
qmlformat ist ein Tool, das QML-Dateien automatisch gemäß den QML-Codierungskonventionen formatiert.
Optionen und Einstellungen
Sie können qmlformat mit Befehlszeilenoptionen konfigurieren. Es gibt zwei Gruppen von Optionen: solche, die direkt mit der Formatierung zusammenhängen, und solche, die das Verhalten des Tools steuern.
Die folgenden Optionen wirken sich ausschließlich auf das Verhalten des Tools aus:
| Befehlszeilenoption | Beschreibung |
|---|---|
-h, --help | Zeigt eine Hilfe zu den Befehlszeilenoptionen an. |
--help-all | Zeigt eine Hilfe an, einschließlich allgemeiner Qt-Optionen. |
-v, --version | Zeigt Versionsinformationen an. |
-V, --verbose | Ausführlicher Modus. Gibt detailliertere Informationen aus. |
--write-defaults | Schreibt die Standardeinstellungen in die Datei „ .qmlformat.ini “ und beendet das Programm. |
--output-options | Gibt alle verfügbaren Optionen, deren Standardwerte sowie Hinweise zu Werten oder Typen aus. |
--ignore-settings | Ignoriert alle Konfigurationsdateien und berücksichtigt nur Befehlszeilenoptionen. |
-i, --inplace | Datei direkt bearbeiten, anstatt die Ausgabe an stdout zu senden. |
-f, --force | Auch bei Auftreten eines Fehlers fortfahren. |
-F, --files <file> | Alle in der Datei aufgeführten Dateien direkt vor Ort formatieren. |
Die nächste Gruppe von Optionen legt fest, wie Dateien formatiert werden sollen, und kann auch über eine Einstellungsdatei gesteuert werden.
Bei booleschen Optionen übergeben Sie das Flag über die Befehlszeile oder setzen Sie die Variable in der Einstellungsdatei auf „ true “, um das Verhalten zu aktivieren.
| Befehlszeilenoption | Name der Einstellung | Standardwert | Beschreibung |
|---|---|---|---|
-t, --tabs | UseTabs | false | Tabulatoren anstelle von Leerzeichen verwenden. |
-w, --indent-width <width> | Einrückungsbreite | 4 | Wie viele Leerzeichen werden beim Einrücken verwendet? |
-W, --column-width <width> | MaxColumnWidth | -1 | Teilt die Zeile in mehrere Zeilen auf, wenn sie die angegebene Breite überschreitet. Verwenden Sie „ -1 “, um den Zeilenumbruch zu deaktivieren (Standard). |
-n, --normalize | NormalizeOrder | false | Ordnet die Attribute von Objekten gemäß den QML-Codierungsrichtlinien neu an und sortiert sie. Nicht kompatibel mit ` --group-attributes-together`. |
-l, --newline <newline> | NewlineType | native | Überschreibt das zu verwendende Zeilenumbruchformat (native, macos, unix, windows). |
-S, --sort-imports | SortImports | false | Sortiert Importe alphabetisch (dies kann die Semantik verändern, wenn ein bestimmter Name Typen in mehreren Modulen identifiziert). |
--objects-spacing | ObjectsSpacing | false | Stellt Leerzeichen zwischen Objekten sicher (funktioniert nur mit „ normalize “ oder „ group-attributes-together “). |
--functions-spacing | Funktionsabstände | false | Stellt Abstände zwischen Funktionen sicher (funktioniert nur mit normalize oder group-attributes-together). |
--group-attributes-together | GroupAttributesTogether | false | Ordnet die Attribute von Objekten gemäß den QML-Codierungsrichtlinien neu an, sortiert sie jedoch nicht. Nicht kompatibel mit --normalize. |
--single-line-empty-objects | SingleLineEmptyObjects | false | Schreibt leere Objekte in eine einzige Zeile (funktioniert nur mit „ normalize “ oder „ group-attributes-together “). |
--semicolon-rule | SemicolonRule | always | Passt das Hinzufügen von Semikolons am Ende von JS-Anweisungen an (always, essential). Weitere Details finden Sie unter „Semikolonregel “. |
Argumente
| Argumente: |
|---|
| Dateinamen |
Verwendung
qmlformat ist flexibel und lässt sich an Ihre Bedürfnisse anpassen. qmlformat sollte in einer Sandbox, einem Container oder einer anderen sicheren Umgebung eingesetzt werden, wenn es mit nicht vertrauenswürdigem Code ausgeführt wird, beispielsweise beim Formatieren von QML-Dateien während des Testens in einer öffentlichen CI-Umgebung.
Ausgabe
qmlformat schreibt die formatierte Version der Datei in die Standardausgabe (stdout). Um Ihre Datei direkt zu aktualisieren, geben Sie das Flag „ -i “ an.
Eigenschaften, Funktionen und Signale gruppieren
Mit dem Flag „ -n “ oder „ --normalize “ gruppiert und sortiert `qmlformat` alle Eigenschaften, Funktionen und Signale nach Namen, anstatt die bestehende Reihenfolge beizubehalten.
Beispiel:
import QtQuick
QtObject {
signal s2()
property int h
function z() {}
property int w
function y() {}
id: asdf
signal s1()
property Item myItem2: Item {
TextEdit {}
Rectangle {}
}
property Item myItem: Item {
Rectangle {}
TextEdit {}
}
}wird wie folgt formatiert:
import QtQuick
QtObject {
id: asdf
property int h
property Item myItem: Item {
Rectangle {
}
TextEdit {
}
}
property Item myItem2: Item {
TextEdit {
}
Rectangle {
}
}
property int w
signal s1
signal s2
function y() {
}
function z() {
}
}Um die Attribute zu gruppieren, ohne nach Namen zu sortieren, verwenden Sie stattdessen „ --group-attributes-together “.
Dadurch wird der vorherige Codeausschnitt wie folgt formatiert:
import QtQuick
QtObject {
id: asdf
property int h
property int w
property Item myItem2: Item {
TextEdit {
}
Rectangle {
}
}
property Item myItem: Item {
Rectangle {
}
TextEdit {
}
}
signal s2
signal s1
function z() {
}
function y() {
}
}Diese Option hat Vorrang vor „ --normalize “.
Einstellungsdatei
Sie können qmlformat konfigurieren, indem Sie eine Einstellungsdatei (.qmlformat.ini) in Ihren Projektquellcode oder in die übergeordneten Verzeichnisse Ihres Projektquellordners einbinden. Eine Standard-Einstellungsdatei erhalten Sie, indem Sie das Flag „ --write-defaults “ übergeben. Dadurch wird die Datei „ .qmlformat.ini “ im aktuellen Arbeitsverzeichnis generiert.
Warnung: „ --write-defaults “ überschreibt alle vorhandenen Einstellungen und Kommentare.
Formatieren einer Dateiliste
Sie können zwar eine Liste der zu formatierenden Dateien als Argumente übergeben, qmlformat bietet jedoch die Option „ -F “, um eine Reihe von Dateien zu formatieren, die in einer Datei gespeichert sind. In diesem Fall erfolgt die Formatierung an Ort und Stelle.
// FileList.txt
main.qml
mycomponent.qmlSo verwenden Sie diese Liste:
qmlformat -F FileList.txtHinweis: Wenn die Datei einen ungültigen Eintrag enthält, beispielsweise einen nicht existierenden Dateipfad oder einen gültigen Dateipfad, dessen Inhalt jedoch ein ungültiges QML-Dokument ist, meldet `qmlformat` für diesen Eintrag einen Fehler und fährt fort, die verbleibenden gültigen Einträge an Ort und Stelle zu formatieren.
Warnung: Wenn Sie die Option „ -F “ angeben, ignoriert „qmlformat“ die Positionsargumente.
Semikolon-Regel
Mit der Option „ --semicolon-rule “ können Sie das Hinzufügen von Semikolons am Ende von JS-Anweisungen individuell anpassen.
Folgende Werte sind zulässig:
always- Immer Semikolons hinzufügen (Standard).essential- Semikolons entfernen, es sei denn, deren Weglassen würde zu Problemen führen.
Deaktivieren der Formatierung mit Kommentaren
Sie können `qmlformat` mithilfe spezieller Kommentare vorübergehend deaktivieren.
// qmlformat offDeaktiviert die Formatierung ab dieser Zeile.// qmlformat onSchaltet die Formatierung wieder ein, nachdem Sie sie deaktiviert haben.
Auf diese Weise können Sie manuell angepassten Code oder komplexe Strukturen beibehalten, ohne dass qmlformat deren Layout verändert. Die Formatierung bleibt deaktiviert, bis der nächste Kommentar „ // qmlformat on “ auftritt oder bis zum Ende der Datei, falls kein „re-enable“ gefunden wird.
Beachten Sie bei der Verwendung von Formatierungsanweisungen Folgendes:
- Anweisungen müssen in einer eigenen Zeile stehen.
- Verschachtelte Anweisungen werden nicht unterstützt. Es werden nur das erste `
// qmlformat off` und das darauf folgende `// qmlformat on` berücksichtigt. Alle weiteren Anweisungen innerhalb eines deaktivierten Bereichs werden ignoriert. - Anweisungen werden im normalisierten Formatierungsmodus ignoriert, wenn „
sortImports“ aktiviert ist oder wenn eine Option verwendet wird, die die Reihenfolge des Originaldokuments ändert. In diesen Fällen wird die Formatierung immer angewendet.
© 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.