Intégration de JavaScript dans QML
Le code JavaScript peut être facilement intégré dans QML pour fournir une logique d'interface utilisateur, un contrôle impératif ou d'autres avantages.
Utilisation d'expressions JavaScript pour les valeurs de propriété
Les expressions JavaScript peuvent être utilisées dans QML comme des liaisons. En voici un exemple :
Item {
width: Math.random()
height: width < 100 ? 100 : (width + 50) / 2
}Notez que les appels de fonction, comme Math.random(), ne seront pas réévalués à moins que leurs arguments ne changent. Ainsi, la liaison à Math.random() sera un nombre aléatoire et ne sera pas réévaluée, mais si la largeur est modifiée d'une autre manière, la liaison à la hauteur sera réévaluée pour en tenir compte.
Ajout de fonctions JavaScript dans QML
Les fonctions JavaScript peuvent être déclarées sur les éléments QML, comme dans l'exemple ci-dessous. Cela vous permet d'appeler la méthode en utilisant l'identifiant de l'élément.
import QtQuick Item { id: container width: 320 height: 480 function randomNumber() { return Math.random() * 360; } function getNumber() { return container.randomNumber(); } TapHandler { // This line uses the JS function from the item onTapped: rectangle.rotation = container.getNumber(); } Rectangle { color: "#272822" width: 320 height: 480 } Rectangle { id: rectangle anchors.centerIn: parent width: 160 height: 160 color: "green" Behavior on rotation { RotationAnimation { direction: RotationAnimation.Clockwise } } } }
Utilisation de fichiers JavaScript
Les fichiers JavaScript peuvent être utilisés pour abstraire la logique des fichiers QML. Pour ce faire, placez d'abord vos fonctions dans un fichier .js, comme dans l'exemple ci-dessous.
// myscript.js
function getRandom(previousValue) {
return Math.floor(previousValue + Math.random() * 90) % 360;
}Ensuite, importez le fichier dans tout fichier .qml qui doit utiliser les fonctions, comme dans l'exemple de fichier QML ci-dessous.
import QtQuick import "myscript.js" as Logic Item { width: 320 height: 480 Rectangle { color: "#272822" width: 320 height: 480 } TapHandler { // This line uses the JS function from the separate JS file onTapped: rectangle.rotation = Logic.getRandom(rectangle.rotation); } Rectangle { id: rectangle anchors.centerIn: parent width: 160 height: 160 color: "green" Behavior on rotation { RotationAnimation { direction: RotationAnimation.Clockwise } } } }

Pour plus de détails sur le moteur JavaScript utilisé par QML, ainsi que sur la différence avec le navigateur JS, voir la documentation complète sur les expressions JavaScript dans les documents QML.
© 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.