So I felt all warm and fuzzy inside after reading that Qt3D has re-emerged in a v2.0 and is in fact becoming a part of Qt5 soon and that parts of it is already available for testing as a tech preview.
I set out with a simple plan, I would have Qt3D working inside a widget in my existing C++/widgets based application. However the only example I could find that shows how to use Qt3D from C++ is called basicshapes-cpp, and it shows some shapes rendered in a separate OpenGL/Qt3D prepared window
(class that extends QWindow
) as opposed from a QWidget
.
Now I read about the role of QWindow
vs. QWidget
and how it all hangs together neatly, but I am still struggling to understand how I can port the Qt3D code from the basicshapes-cpp
program to run inside a QWidget
. What are the basic steps that need to observed?
This extraction of this post shows how it works:
#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
}
来源:https://stackoverflow.com/questions/35074830/show-qt3d-stuff-inside-qwidget-in-qt5