在 Qt5 中的 QWidget 中显示 Qt3D 内容
Show Qt3D stuff inside QWidget in Qt5
所以在 reading Qt3D 重新出现在 v2.0 之后,我感到内心温暖而模糊实际上很快就会成为 Qt5 的一部分,并且它的一部分已经可以作为技术预览进行测试。
我制定了一个简单的计划,我会让 Qt3D 在我现有的基于 C++/widgets 的应用程序中的一个小部件内工作。然而,我能找到的唯一示例显示了如何使用 C++ 中的 Qt3D 称为 basicshapes-cpp,它显示了一些渲染的形状一个单独的 OpenGL/Qt3D 准备 window
(class 扩展 QWindow
),而不是 QWidget
.
现在我了解了 QWindow
与 QWidget
的作用以及它们如何巧妙地结合在一起,但我仍在努力理解如何移植 Qt3D 代码从 basicshapes-cpp
程序到 QWidget
内的 运行。需要遵守的基本步骤是什么?
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
}
如果有人感兴趣,我实现了一个实际的 Qt3D 小部件。可以找到代码 here.
所以在 reading Qt3D 重新出现在 v2.0 之后,我感到内心温暖而模糊实际上很快就会成为 Qt5 的一部分,并且它的一部分已经可以作为技术预览进行测试。
我制定了一个简单的计划,我会让 Qt3D 在我现有的基于 C++/widgets 的应用程序中的一个小部件内工作。然而,我能找到的唯一示例显示了如何使用 C++ 中的 Qt3D 称为 basicshapes-cpp,它显示了一些渲染的形状一个单独的 OpenGL/Qt3D 准备 window
(class 扩展 QWindow
),而不是 QWidget
.
现在我了解了 QWindow
与 QWidget
的作用以及它们如何巧妙地结合在一起,但我仍在努力理解如何移植 Qt3D 代码从 basicshapes-cpp
程序到 QWidget
内的 运行。需要遵守的基本步骤是什么?
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
}
如果有人感兴趣,我实现了一个实际的 Qt3D 小部件。可以找到代码 here.