在Qt5中的QWidget中显示Qt3D内容

时间:2016-01-29 00:30:35

标签: c++ qt5 qwidget qt3d qwindow

所以reading {strong> Qt3D 重新出现在 v2.0 之后我内心感到温暖和模糊,实际上已成为其中的一部分 Qt5 很快,其部分内容已作为技术预览版进行测试。

我提出了一个简单的计划,我将 Qt3D 在我现有的基于 C ++ / widgets 的应用程序中的小部件内工作。然而,我能找到的唯一一个展示如何使用 C ++ 中的 Qt3D 的示例被称为basicshapes-cpp,并且它显示了在单独的OpenGL / Qt3D中呈现的一些形状window(扩展QWindow的类)而不是QWidget

现在我读到QWindowQWidget的作用以及它们如何巧妙地挂在一起,但我仍然在努力理解如何移植 Qt3D basicshapes-cpp程序中的代码在QWidget内运行。需要观察的基本步骤是什么?

2 个答案:

答案 0 :(得分:1)

this post的提取显示了它的工作原理:

#include <QObject>
#include <QWidget>
#include <Qt3DExtras/Qt3DWindow>

class Qt3DWidget
      : public QWidget
{
    Q_OBJECT
    QWidget *container;

public:
    explicit Qt3DWidget(QWidget *parent = nullptr);

};

Qt3DWidget::Qt3DWidget(QWidget *parent)
   : QWidget(parent)
{
    auto view = new Qt3DExtras::Qt3DWindow();

    // put Qt3DWindow into a container in order to make it possible
    // to handle the view inside a widget
    container = createWindowContainer(view,this);

    // ... further stuff goes here
}

答案 1 :(得分:1)

如果有人感兴趣,我实现了一个实际的Qt3D小部件。可以找到代码here