Sur cette page

Viregule

Cette catégorie d'avertissement est orthographiée « [comma] » par qmllint.

N'utilisez pas d'expressions avec virgule

Que s'est-il passé ?

Une expression avec virgule en JavaScript a été utilisée en dehors d'une boucle « for ».

Pourquoi est-ce un problème ?

Les expressions avec virgule réduisent la lisibilité du code et masquent les effets secondaires.

Exemple

import QtQuick

Item {
    Component.onCompleted: init(config, true), enableLogging(categories), run(1000) // millis
}

Pour corriger cet avertissement, refactorisez le code afin d'utiliser des instructions distinctes pour chaque opération. De cette manière, chaque effet secondaire est explicite au lieu de se produire dans le cadre d'une autre opération sans rapport :

import QtQuick

Item {
    Component.onCompleted: {
        init(config, true)
        enableLogging(categories)
        run(1000) // millis
    }
}

De plus, il existe des considérations particulières pour les cas où des expressions à virgule apparaissent parce qu’une variable est intentionnellement capturée pour une liaison, comme dans le code suivant, où ` previewOfFirstPage ` est une fonction définie en C++ qui dépend en interne de ` Config.fontSize` :

Text {
   // This causes the function to re-run when fontSize changes
   text: Config.fontSize, documentProvider.previewOfFirstPage()
}

Si vous rencontrez cette situation, envisagez l'une des approches suivantes :

  • Si une fonction telle que previewOfFirstPage dépend d’une propriété, préférez rendre cette dépendance explicite en passant la valeur en argument.
    Text {
       text: documentProvider.previewOfFirstPage(Config.fontSize)
    }
  • Si la modification de la signature de la fonction n’est pas souhaitable pour des raisons liées à l’API, envisagez plutôt de remplacer la fonction par un ` Q_PROPERTY `, afin que des notifications de modification puissent être émises lorsque la dépendance est modifiée en C++ :
    void Config::setFontSize(int fontSize) {
       if (m_fontSize == fontSize)
          return;
       m_fontSize = fontSize;
       emit fontSizeChanged();
       emit previewOfFirstPageChanged();
    }
    Text {
       text: documentProvider.previewOfFirstPage
    }
  • S'il n'est pas possible de modifier l'implémentation C++ ou d'ajouter des dépendances QML, utilisez une directive ` qmllint ` pour désactiver l'avertissement. Ajoutez un commentaire expliquant que l'intention est de capturer la variable dans la liaison.
    Text {
       // This causes the function to re-run when fontSize changes
       text: Config.fontSize, documentProvider.previewOfFirstPage() // qmllint disable comma
    }

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