c++ - 将 STL 文件添加到 QT 小部件

标签 c++ qt qt3d

我正在尝试使用 QT5.10 和 c++ 创建 STL 文件的查看器。我成功地在 QWindow 中查看了该文件,但我没有找到如何在 QWidget 中查看它。这就是我想做的Qt Designer .

这是在 QWindow 中查看它的代码:

Qt3DExtras::Qt3DWindow view;

Qt3DCore::QEntity *rootEntity = new Qt3DCore::QEntity;
Qt3DCore::QEntity *flyingwedge = new Qt3DCore::QEntity(rootEntity);

Qt3DExtras::QPhongMaterial *material = new Qt3DExtras::QPhongMaterial();
material->setDiffuse(QColor(200, 200, 200));

Qt3DRender::QMesh *stlObjectMesh = new Qt3DRender::QMesh;
stlObjectMesh->setMeshName("Onshape");
stlObjectMesh->setSource(data);
flyingwedge->addComponent(stlObjectMesh);
flyingwedge->addComponent(material);

Qt3DRender::QCamera *camera = view.camera();
camera->lens()->setPerspectiveProjection(1000.0f, 16.0f/9.0f, 0.1f, 1000.0f);
camera->setPosition(QVector3D(-500, -100, 40.0f));
camera->setViewCenter(QVector3D(0, 0, 0));

Qt3DCore::QEntity *lightEntity = new Qt3DCore::QEntity(rootEntity);
Qt3DRender::QPointLight *light = new Qt3DRender::QPointLight(lightEntity);
light->setColor("white");
light->setIntensity(0.8f);
lightEntity->addComponent(light);

Qt3DCore::QTransform *lightTransform = new Qt3DCore::QTransform(lightEntity);
lightTransform->setTranslation(QVector3D(60, 0, 40.0f));
lightEntity->addComponent(lightTransform);

Qt3DExtras::QOrbitCameraController *camController = new Qt3DExtras::QOrbitCameraController(rootEntity);

camController->setCamera(camera);
camController->setLinearSpeed( 5000.0f );
camController->setLookSpeed( 1000.0f );
view.setRootEntity(rootEntity);
view.show();

最佳答案

您可以为 3D 窗口创建一个容器。此容器是一个 QWidget,您可以随后将其嵌入布局的其余部分。

QWidget *container = QWidget::createWindowContainer(3DWindow);
widgetLayout->addWidget(container);

当然,您必须在 3D 窗口中省略 view.show();,但在您的主窗口中调用它。

关于c++ - 将 STL 文件添加到 QT 小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50043954/

相关文章:

c++ - Qt/C++ 中的反射

c++ - QT3D 中的二维网格

c++ - Qt QML 和 3d : are these two frameworks the same?

c++ - SWIG 将流从 python 传递到 C++

qt - 如何使用 Qt 使用鼠标更改网格布局单元格的大小?

c++ - 将 std::error_code 与非整数值一起使用

c++ - Qt 程序无法打开我的 MySql 数据库

qt - 如何使用 QML 更改 Qt3D 中对象的纹理或颜色?

c++ - 关于运算符重载的问题

java - 连接的显示器名称