Qt 3D: Basic Shapes C++ Beispiel

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

Basic Shapes zeigt vier grundlegende Formen, die Qt 3D anbietet: einen Torus, einen Zylinder, einen Würfel und eine Kugel. Das Beispiel zeigt auch, wie man eine Qt 3D Szene in ein Widget einbettet und mit anderen Widgets verbindet.

Ausführen des Beispiels

Zum Ausführen des Beispiels von Qt Creatorzu starten, öffnen Sie den Modus Welcome und wählen Sie das Beispiel aus Examples. Weitere Informationen finden Sie unter Erstellen und Ausführen eines Beispiels.

Einrichten eines Torus-Netzes

Als Beispiel gehen wir durch, wie man ein Torus-Netz einrichtet. Zunächst wird QTorusMesh instanziiert, und dann werden die netzspezifischen Parameter festgelegt, die für den Torus den Radius, den kleineren Radius und die Anzahl der Ringe und Slices umfassen.

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

Die Größe und Position des Torus kann mit Transformationskomponenten angepasst werden. Wir erstellen Skalierungs-, Translations- und Rotationskomponenten und fügen sie der Komponente QTransform 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 Netzes zu ändern, erstellen wir ein QPhongMaterial und legen seine diffuse Farbe fest.

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

Im letzten Schritt fügen wir den Torus in einen Entity-Baum ein, indem wir eine QEntity mit einem übergeordneten Entity erstellen und die zuvor erstellten Mesh-, Material- und Transformationskomponenten hinzufügen.

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 des Objekts steuern, indem wir festlegen, ob es ein übergeordnetes Objekt hat oder nicht. Das heißt, ob es Teil eines Entity-Baums ist oder nicht.

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

Beispielprojekt @ code.qt.io

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