所以在读到Qt3D在v2.0中重新出现并且实际上很快就会成为Qt5的一部分并且其中的一部分已经可以作为技术预览进行测试后,我感到内心温暖和模糊。
我制定了一个简单的计划,我将在现有的基于C++/小部件的应用程序的小部件中让Qt3D工作。然而,我能找到的唯一一个显示如何从C++使用Qt3D的例子称为basicshapes-cpp,它显示了在单独的OpenGL/Qt3D准备window
(扩展QWindow
类)中呈现的一些形状,而不是从QWidget
现在我读到了QWindow
与 QWidget
以及它们如何整齐地挂在一起,但我仍在努力理解如何从basicshapes-cpp
程序中移植 Qt3D 代码以在QWidget
内运行。需要遵守哪些基本步骤?
如果有人感兴趣,我实现了一个实际的Qt3D小部件。代码可以在这里找到。
这篇文章的摘录显示了它是如何工作的:
#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
}