En esta página

Coma

Esta categoría de advertencia se escribe [comma] por qmllint.

No utilice expresiones con coma

¿Qué ha ocurrido?

Se ha utilizado una expresión JavaScript con coma fuera de un bucle for.

¿Por qué es malo?

Las expresiones con coma reducen la legibilidad del código y ocultan los efectos secundarios.

Ejemplo

import QtQuick

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

Para solucionar este problema, refactorice el código para utilizar sentencias distintas para cada operación. De esta forma, cada efecto secundario es explícito en lugar de ocurrir como parte de otra operación no relacionada:

import QtQuick

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

Además, hay algunas consideraciones especiales para los casos en los que las expresiones con coma aparecen porque una variable está siendo capturada intencionadamente para un enlace, como en el siguiente código, donde previewOfFirstPage es una función definida en C++ que depende internamente de Config.fontSize:

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

Si se encuentra con esta situación, considere uno de los siguientes enfoques:

  • Si una función como previewOfFirstPage depende de una propiedad, prefiera hacer explícita esta dependencia pasando el valor como argumento.
    Text {
       text: documentProvider.previewOfFirstPage(Config.fontSize)
    }
  • Si cambiar la firma de la función no es deseable por razones de API, considere sustituir la función por una Q_PROPERTY en su lugar, de modo que se puedan emitir notificaciones de cambio para ella cuando se modifique la depenencia en C++:
    void Config::setFontSize(int fontSize) {
       if (m_fontSize == fontSize)
          return;
       m_fontSize = fontSize;
       emit fontSizeChanged();
       emit previewOfFirstPageChanged();
    }
    Text {
       text: documentProvider.previewOfFirstPage
    }
  • Si no es posible modificar la implementación de C++ o añadir dependencias de QML, utilice una directiva qmllint para silenciar la advertencia. Incluya un comentario explicando que la intención es capturar la variable en el binding.
    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.