QT--学习疑惑探索
用C++定义了一个类,并注册到qml文件中,但是这个类只能用Quickview进行显示,用其他方法好像不行。
启发: 1 window控件类是没有parent的widget.
2
m_view = new QQuickView();
m_view->setSource(QUrl(QStringLiteral("qrc:/QML/Arm3dShowTry.qml")));
m_item = m_view->rootObject();
m_item->setWidth(QApplication::desktop()->width()*0.2);
m_item->setParent(root)???
3
arm3d类中用afterrendering信号可以显示出来了(将arm3d作为一个组件放到armpose.qml),但是占据了整个空间,调节glOrtho(-400.0,400.0, -400.0, 400.0, -400, 400);中的参数没有用。---现在arm3D显示的三维姿态图与其他的画面是单独分开画的,后画的会将先画的覆盖掉!所以会有这种情况了!另外,我显示三维图形时,进行了一些背景的设置, 设置的 这些背景是对整个window进行了设置,这也是为何整个背景全部是黑色的原因。
调节arm3D::paint()中的glViewport(0, 0, m_viewportSize.width()*0.4, m_viewportSize.height()*0.4);有作用,单仅仅是缩放了整个机械臂的大小,整体的背景仍然是全黑色。
-----当前最好的方法应该是就让三维图形以单独的QquickView的方式弹出来,只需要控制好弹出的窗口的位置即可!因为将三维openGL作为一个qml文件的组件弹出需要设置背景啥的,会直接影响到其他组件的显示