我试图在大型非QML应用程序(“主应用程序”)的QMdiArea中添加一个当前独立的QML应用程序(“新应用程序”)中的显示小部件。我试图将其添加到使用QT5.6.0的主要应用程序中,而新的应用程序使用QT4.8。
我的第一步是在Qt5.6下编译“新应用程序”,但是Qt4和Qt5之间QML应用程序的主要架构更改让我感到困惑。“新应用程序”的主视图直接从QDeclarativeView继承,并大量使用QWidget和QGraphicsView功能。
Qt关于将QML应用程序从Qt4迁移到Qt5 (http://doc.qt.io/qt-5/qtquick-porting-qt5.html)的指南似乎建议使用不受欢迎的声明模块来解决这个问题,但从5.6.0开始,QDeclarative的所有源代码都已从qtquick1中删除,我无法将“主应用程序”切换回较早版本的Qt。
我对Qt和“新应用程序”都很陌生。有什么方法比完全理解当前设计的“新应用程序”,然后阅读旧的声明式框架和新的qt腿框架,重组/重写所有东西来使用新的qt腿框架更容易吗?
发布于 2016-05-20 07:33:15
对QML2的移植工作在很大程度上取决于您拥有多少自定义项,以及您如何与主应用程序中的声明性视图交互。无论哪种方式,我强烈建议在尝试移植之前花时间实际理解现有的QML代码。大部分移植代码通常只包含用QQuick*替换QDeclarative*,但最终您将不得不面对移植过程中的QGraphicsView -> OpenGL部分。
对于将QML2场景嵌入到QWidget应用程序中,QQuickWidget是您所需要的。
我感到有点惊讶的是,QtQuick1被完全删除了,而不是仅仅在qt5.6中被否决了。如果您编译并发布了您自己的工具链,那么重新引入qtquick1子模块不应该太费劲,因为qt5.6中没有重大的体系结构更改来阻止它的工作。
https://stackoverflow.com/questions/37334164
复制相似问题