Qt Quick 3D - Beispiel für die Modellauswahl
Veranschaulicht die Auswahl von Modellen.
Dieses Beispiel veranschaulicht die Auswahl. Es stehen 3 verschiedene animierte Modelle zur Auswahl. Wenn ein Modell ausgewählt wird, wird die Animation angehalten und die Farbe des Modells geändert, um deutlich zu machen, welches Modell ausgewählt wurde. Detaillierte Informationen zum Auswahlergebnis werden oben im Anwendungsfenster angezeigt.

Modell auswählbar machen
Um ein Modell auswählbar zu machen, muss die Eigenschaft „ pickable “ auf „ true “ gesetzt werden. Außerdem fügen wir „ objectName “ hinzu, damit das Modell den Namen des ausgewählten Modells anzeigen kann.
Model {
id: cubeModel
objectName: "Cube"
source: "#Cube"
pickable: true
property bool isPicked: falseDie Eigenschaft „ isPicked “ wurde hinzugefügt, um die Animation und die Farbe umzuschalten.
materials: PrincipledMaterial {
baseColor: cubeModel.isPicked ? "#41cd52" : "#09102b"
...
SequentialAnimation on eulerRotation {
running: !cubeModel.isPickedAbrufen der Auswahlergebnisse
Für die eigentliche Auswahl müssen wir einen „ MouseArea “ hinzufügen, der den gesamten Bereich „ View3D “ abdeckt.
MouseArea {
anchors.fill: viewIm ` onClicked `-Handler des Mausbereichs verwenden wir die Methode ` pick `, um das tatsächliche Ergebnis der Auswahl abzurufen.
var result = view.pick(mouse.x, mouse.y);Wenn das Ergebnis einen „ target object “ enthält, gehen wir die Einzelheiten des Ergebnisses durch und zeigen sie im Textfeld oben in der Anwendungsansicht an.
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.