Qt Quick 3D - Exemple de sélection
Illustre la sélection de modèles.
Cet exemple illustre la sélection. Il existe 3 modèles animés différents pouvant être sélectionnés. Lorsqu'un modèle est sélectionné, l'animation s'arrête et la couleur du modèle change afin d'indiquer clairement quel modèle a été sélectionné. Des informations détaillées sur le résultat de la sélection s'affichent en haut de la fenêtre de l'application.

Rendre un modèle sélectionnable
Pour rendre un modèle sélectionnable, la propriété « pickable » doit être définie sur « true ». Nous ajoutons également « objectName » au modèle afin de pouvoir afficher le nom du modèle sélectionné.
Model {
id: cubeModel
objectName: "Cube"
source: "#Cube"
pickable: true
property bool isPicked: falseLa propriété isPicked a été ajoutée pour permettre d’activer ou de désactiver l’animation et la couleur.
materials: PrincipledMaterial {
baseColor: cubeModel.isPicked ? "#41cd52" : "#09102b"
...
SequentialAnimation on eulerRotation {
running: !cubeModel.isPickedObtenir les résultats de la sélection
Pour effectuer la sélection proprement dite, nous devons ajouter une zone de sélection ( MouseArea ) couvrant l’intégralité de la zone de sélection ( View3D).
MouseArea {
anchors.fill: viewDans le gestionnaire d’ onClicked s de la zone de sélection, nous utilisons la méthode pick pour obtenir le résultat effectif de la sélection.
var result = view.pick(mouse.x, mouse.y);Si le résultat contient une target object, nous examinons les détails de ce résultat et les affichons dans le champ de texte situé en haut de la vue de l'application.
if (result.objectHit) {
var pickedObject = result.objectHit;
// Toggle the isPicked property for the model
pickedObject.isPicked = !pickedObject.isPicked;
// Get picked model name
pickName.text = pickedObject.objectName;
// Get other pick specifics
uvPosition.text = "("
+ result.uvPosition.x.toFixed(2) + ", "
+ result.uvPosition.y.toFixed(2) + ")";
distance.text = result.distance.toFixed(2);
scenePosition.text = "("
+ result.scenePosition.x.toFixed(2) + ", "
+ result.scenePosition.y.toFixed(2) + ", "
+ result.scenePosition.z.toFixed(2) + ")";
localPosition.text = "("
+ result.position.x.toFixed(2) + ", "
+ result.position.y.toFixed(2) + ", "
+ result.position.z.toFixed(2) + ")";
worldNormal.text = "("
+ result.sceneNormal.x.toFixed(2) + ", "
+ result.sceneNormal.y.toFixed(2) + ", "
+ result.sceneNormal.z.toFixed(2) + ")";
localNormal.text = "("
+ result.normal.x.toFixed(2) + ", "
+ result.normal.y.toFixed(2) + ", "
+ result.normal.z.toFixed(2) + ")";© 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.