是的,可以在C++代碼中定義QEntity然後使用它。在這裏介紹的方法:
http://doc.qt.io/qt-5/qtqml-cppintegration-definetypes.html
首先要創建QEntity的。球例如:
class MyEntity : public Qt3DCore::QEntity {
public:
MyEntity(Qt3DCore::QEntity* parent=0) : Qt3DCore::QEntity(parent) {
Qt3DRender::QMaterial *material = new Qt3DExtras::QPhongMaterial;
Qt3DExtras::QSphereMesh *sphereMesh = new Qt3DExtras::QSphereMesh;
sphereMesh->setRadius(8);
addComponent(sphereMesh);
addComponent(material);
}
virtual ~MyEntity() {}
};
然後將其註冊爲QML組件:
qmlRegisterType<MyEntity>("com.company.my", 1, 0, "MyEntity");
而只是用它在QML:
Scene3D {
id: myScene
anchors.fill: parent
cameraAspectRatioMode: Scene3D.AutomaticAspectRatio
focus: true
enabled: true
Entity {
id: sceneRoot
Quick.Camera {
id: camera
projectionType: Quick.CameraLens.PerspectiveProjection
fieldOfView: 45
nearPlane : 0.1
farPlane : 1000.0
position: Qt.vector3d(0.0, 0.0, 40.0)
upVector: Qt.vector3d(0.0, 1.0, 0.0)
viewCenter: Qt.vector3d(0.0, 0.0, 0.0)
}
components: [
Quick.RenderSettings {
activeFrameGraph: ForwardRenderer {
clearColor: Qt.rgba(0, 0.5, 1, 0)
camera: camera
}
}
]
MyEntity {
id: myEnt
}
}
}
這是有點接近鏈接只回答:HTTP ://stackoverflow.com/help/how-to-answer你可以做一個最小的,完整的例子作爲答案(C++和QML片段)。 – Mitch
@ kamil請你分享一個合適的例子嗎? –