
正文
QT 中Widgets-Scene3d例子学习
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
QT中自带的例子widgets-scene3d实现在基于Widget的应用程序中使用qml 3d场景的功能,我在此基础上,将basicshapes-cpp的例子加以嵌入:
相关代码如下:
CoolFormat Source Formatter http://blog.csdn.net/akof1314
C++ Code
|
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
#include <QApplication>
#include <QMainWindow> #include <QQuickWidget> #include <QMdiArea> #include <QLCDNumber> #include <QMenuBar> #include "scenemodifier.h" #include <Qt3DRender/qcamera.h> #include <Qt3DCore/qentity.h> #include <Qt3DRender/qcameralens.h> #include <Qt3DInput/QInputAspect>
#include <Qt3DExtras/qtorusmesh.h>
#include <Qt3DCore/qtransform.h>
#include <Qt3DRender/qrenderaspect.h>
#include <Qt3DExtras/qt3dwindow.h>
int main(int argc, char **argv)
QMainWindow mainWindow;
QMdiArea *centralWidget = new QMdiArea;
Qt3DInput::QInputAspect *input = new Qt3DInput::QInputAspect;
// Root entity
Qt3DCore::QEntity *lightEntity = new Qt3DCore::QEntity(rootEntity);
// For camera controls
// Set root object of the scene
mainWindow.setCentralWidget(centralWidget);
QMenu *fileMenu = mainWindow.menuBar()->addMenu(QObject::tr("&File"));
mainWindow.resize();
return app.exec();
|
再进一步,我将QT场景视图(Graphics-View)嵌入多文档界面,下面尝试将QT自带的boxes例子(GraphicsView With OpenGL)嵌入,相关代码如下:
CoolFormat Source Formatter http://blog.csdn.net/akof1314
C++ Code
|
1
2 3 4 5 6 7 8 9 10 |
// 子窗口4-GraphicsView With OpenGL
QGLWidget *widget = new QGLWidget(QGLFormat(QGL::SampleBuffers)); widget->makeCurrent(); Scene scene(1024, 768, maxTextureSize);; GraphicsView view; view.setViewport(widget); view.setViewportUpdateMode(QGraphicsView::FullViewportUpdate); view.setScene(&scene); //gview.show(); centralWidget->addSubWindow(&gview); |
我在Ubuntu中测试的一个截图效果如下:






