Auf dieser Seite

Qt 3D: Beispiel für Grundformen in C++

Zeigt vier Grundformen, die Qt 3D anbietet, und erstellt für jede davon ein Netz.

Screenshot mit vier 3D-Objekten: einem Torus, einem Zylinder, einem Quader und einer Kugel

„Grundformen“ zeigt vier Grundformen, die Qt 3D bietet: einen Torus, einen Zylinder, einen Würfel und eine Kugel. Das Beispiel zeigt außerdem, wie man eine „ Qt 3D “-Szene in ein Widget einbettet und mit anderen Widgets verbindet.

Ausführen des Beispiels

Sie können das Beispiel wie folgt ausführen:

Einrichten eines Torus-Netzes

Als Beispiel zeigen wir, wie ein Torus-Netz eingerichtet wird. Zunächst instanziieren wir die „ QTorusMesh “ und legen dann die netzspezifischen Parameter fest, die für einen Torus aus Radius, Nebenradius sowie der Anzahl der Ringe und Schichten bestehen.

m_torus = new Qt3DExtras::QTorusMesh();
m_torus->setRadius(1.0f);
m_torus->setMinorRadius(0.4f);
m_torus->setRings(100);
m_torus->setSlices(20);

Größe und Position des Torus lassen sich mit Transformationskomponenten anpassen. Wir erstellen Skalierungs-, Translations- und Rotationskomponenten und fügen sie der „ QTransform “-Komponente hinzu.

Qt3DCore::QTransform *torusTransform = new Qt3DCore::QTransform();
torusTransform->setScale(2.0f);
torusTransform->setRotation(QQuaternion::fromAxisAndAngle(QVector3D(0.0f, 1.0f, 0.0f), 25.0f));
torusTransform->setTranslation(QVector3D(5.0f, 4.0f, 0.0f));

Um die diffuse Farbe des Meshes zu ändern, erstellen wir ein „ QPhongMaterial “ und legen dessen diffuse Farbe fest.

Qt3DExtras::QPhongMaterial *torusMaterial = new Qt3DExtras::QPhongMaterial();
torusMaterial->setDiffuse(QColor(QRgb(0xbeb32b)));

Der letzte Schritt besteht darin, den Torus in einen Entitätsbaum einzufügen. Dazu erstellen wir eine „ QEntity “-Komponente mit einer übergeordneten Entität und fügen die zuvor erstellten Mesh-, Material- und Transformationskomponenten darin ein.

m_torusEntity = new Qt3DCore::QEntity(m_rootEntity);
m_torusEntity->addComponent(m_torus);
m_torusEntity->addComponent(torusMaterial);
m_torusEntity->addComponent(torusTransform);

Wir können die Sichtbarkeit der Entität steuern, indem wir festlegen, ob sie eine übergeordnete Entität hat oder nicht. Das heißt, ob sie Teil eines Entitätsbaums ist oder nicht.

void SceneModifier::enableTorus(bool enabled)
{
    m_torusEntity->setEnabled(enabled);
}

Beispielprojekt @ code.qt.io

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