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 Qt Creator: Tutorial: Erstellen und Ausführen.

Einrichten eines Torus-Netzes

Als Beispiel gehen wir durch, wie man ein Torus-Mesh einrichtet. Zunächst instanziieren wir das QTorusMesh und legen dann die netzspezifischen Parameter fest, die für den Torus den Radius, den kleineren Radius und die Anzahl der Ringe und Scheiben 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 der Entität steuern, indem wir festlegen, ob sie ein Elternteil 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.