Sur cette page

qmlformat

qmlformat est un outil qui met automatiquement en forme les fichiers QML conformément aux conventions de codage QML.

Utilisation :
qmlformat [options] arguments

Options et paramètres

Vous pouvez configurer qmlformat à l'aide d'options de ligne de commande. Il existe deux groupes d'options : celles qui sont directement liées à la mise en forme et celles qui contrôlent le comportement de l'outil.

Les options suivantes n'affectent que le comportement de l'outil :

Option de ligne de commandeDescription
-h, --helpAffiche l'aide relative aux options de ligne de commande.
--help-allAffiche l'aide, y compris les options génériques de Qt.
-v, --versionAffiche les informations sur la version.
-V, --verboseMode détaillé. Affiche des informations plus détaillées.
--write-defaultsEnregistre les paramètres par défaut dans le fichier « .qmlformat.ini » et quitte le programme.
--output-optionsAffiche toutes les options disponibles, leur valeur par défaut et une indication sur les valeurs ou les types.
--ignore-settingsIgnore tous les fichiers de configuration et ne prend en compte que les options de ligne de commande.
-i, --inplaceModifie le fichier directement au lieu d’afficher le résultat sur stdout.
-f, --forceContinuer même en cas d'erreur.
-F, --files <file>Mettre en forme tous les fichiers répertoriés dans « file », sur place.

Le groupe d’options suivant définit la manière dont les fichiers doivent être formatés ; ces paramètres peuvent également être contrôlés via un fichier de configuration.

Pour les options booléennes, passez l'indicateur sur la ligne de commande ou définissez la variable sur « true » dans le fichier de configuration pour activer le comportement.

Option de ligne de commandeNom du paramètreValeur par défautDescription
-t, --tabsUseTabsfalseUtiliser des tabulations à la place des espaces.
-w, --indent-width <width>IndentWidth4Nombre d'espaces utilisés pour l'indentation.
-W, --column-width <width>LargeurMaximaleDeColonne-1Divise la ligne en plusieurs lignes si elle dépasse la largeur spécifiée. Utilisez « -1 » pour désactiver le retour à la ligne automatique (par défaut).
-n, --normalizeNormalizeOrderfalseRéorganise et trie les attributs des objets conformément aux directives de codage QML. Incompatible avec --group-attributes-together.
-l, --newline <newline>NewlineTypenativeRemplace le format de saut de ligne à utiliser (native, macos, unix, windows).
-S, --sort-importsSortImportsfalseTrie les importations par ordre alphabétique (cela peut modifier la sémantique si un nom donné identifie des types dans plusieurs modules).
--objects-spacingEspacement des objetsfalseAssure la présence d'espaces entre les objets (ne fonctionne qu'avec normalize ou group-attributes-together).
--functions-spacingEspacement des fonctionsfalseGarantit des espaces entre les fonctions (ne fonctionne qu'avec normalize ou group-attributes-together).
--group-attributes-togetherGroupAttributesTogetherfalseRéorganise, sans toutefois les trier, les attributs des objets conformément aux directives de codage QML. Incompatible avec --normalize.
--single-line-empty-objectsSingleLineEmptyObjectsfalseÉcrit les objets vides sur une seule ligne (ne fonctionne qu’avec normalize ou group-attributes-together).
--semicolon-ruleSemicolonRulealwaysPermet de personnaliser l'ajout de points-virgules à la fin des instructions JS (always, essential). Voir la règle du point-virgule pour plus de détails.

Arguments

Arguments :
noms de fichiers

Utilisation

qmlformat est flexible et peut être configuré selon vos besoins. qmlformat doit être déployé dans un bac à sable, un conteneur ou tout autre environnement sécurisé lorsqu'il est exécuté sur du code non fiable, par exemple lors du formatage de fichiers QML pendant les tests dans un environnement CI public.

Sortie

qmlformat écrit la version formatée du fichier sur stdout. Pour que votre fichier soit mis à jour sur place, spécifiez l'option ` -i `.

Regroupement des propriétés, des fonctions et des signaux

Avec le drapeau « -n » ou « --normalize », qmlformat regroupe et trie toutes les propriétés, fonctions et signaux par nom, au lieu de conserver l'ordre existant.

Par exemple :

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 {}
    }
}

est formaté comme suit :

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() {
    }
}

Pour regrouper les attributs sans les trier par nom, utilisez plutôt --group-attributes-together.

Cela formate l'extrait précédent comme suit :

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() {
    }
}

Cette option a priorité sur --normalize.

Fichier de paramètres

Vous pouvez configurer qmlformat en incluant un fichier de paramètres (.qmlformat.ini) dans le code source de votre projet ou dans les répertoires parents du dossier contenant ce code. Vous pouvez obtenir un fichier de paramètres par défaut en passant l'indicateur --write-defaults. Cela génère le fichier .qmlformat.ini dans le répertoire de travail actuel.

Avertissement : la commande --write-defaults écrase tous les paramètres et commentaires existants.

Mise en forme d’une liste de fichiers

Bien que vous puissiez passer une liste de fichiers à formater en tant qu’arguments, qmlformat propose l’option -F pour formater un ensemble de fichiers stockés dans un fichier. Dans ce cas, le formatage s’effectue in situ.

// FileList.txt
main.qml
mycomponent.qml

Pour utiliser cette liste :

qmlformat -F FileList.txt

Remarque : si le fichier contient une entrée non valide, par exemple un chemin d’accès inexistant ou un chemin d’accès valide mais dont le contenu est un document QML non valide, qmlformat signale une erreur pour cette entrée et continue à formater les entrées valides restantes sur place.

Avertissement : si vous spécifiez l'option ` -F `, `qmlformat` ignore les arguments de position.

Règle relative au point-virgule

L'option --semicolon-rule vous permet de personnaliser l'ajout de points-virgules à la fin des instructions JS.

Les valeurs suivantes sont acceptées :

  • always - Toujours ajouter des points-virgules (par défaut).
  • essential - Supprimer les points-virgules sauf si leur omission entraîne des problèmes.

Désactivation de la mise en forme avec des commentaires

Vous pouvez désactiver temporairement qmlformat à l'aide de commentaires spéciaux.

  • // qmlformat off désactive la mise en forme à partir de cette ligne.
  • // qmlformat on réactive la mise en forme après l'avoir désactivée.

Cela vous permet de conserver du code ajusté manuellement ou des structures complexes sans que qmlformat n'en modifie la mise en page. Le formatage reste désactivé jusqu'au prochain commentaire « // qmlformat on », ou jusqu'à la fin du fichier si aucun commentaire de réactivation n'est trouvé.

Gardez à l'esprit les points suivants lorsque vous utilisez des directives de mise en forme :

  • Les directives doivent figurer sur une ligne distincte.
  • Les directives imbriquées ne sont pas prises en charge. Seules la première directive « // qmlformat off » et la directive « // qmlformat on » suivante sont prises en compte. Toute directive supplémentaire située dans une zone désactivée est ignorée.
  • Les directives sont ignorées en mode de mise en forme normalisée, lorsque la directive « sortImports » est activée, ou lorsqu’une option réorganisant le document d’origine est utilisée. Dans ces cas, la mise en forme est toujours appliquée.

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