2016-05-19 7 views
0

Ich versuche, eine derzeit eigenständige Qt QML-Anwendung ("neue Anwendung") als Anzeige Widget in einer QMdiArea in einer großen Nicht-QML-Qt-Anwendung (" Hauptanwendung"). Die Hauptanwendung, der ich dies hinzufügen möchte, verwendet Qt 5.6.0, und die neue Anwendung verwendet Qt 4.8.Strategie für die Portierung QDeclarative-basierten Code auf Qt 5.6.0

Mein erster Schritt war, "neue Anwendung" Kompilierung unter Qt 5.6 zu bekommen, aber die Hauptänderung der Architektur für Qt QML-Anwendungen zwischen Qt 4 und Qt 5 hat mich ratlos. Die primäre Ansicht für "neue Anwendung" erbt direkt von QDeclarativeView und macht schwere Verwendung von QWidget und QGraphicsView-Funktionalität.

Qt Leitfaden für QML-Anwendungen von Qt4 zu QT5 Migration (http://doc.qt.io/qt-5/qtquick-porting-qt5.html) unter Verwendung der veralteten deklarative Modul als die Lösung für dieses Problem für QDeclarative wurde als 5,6 von qtquick1 entfernt, aber alle Quellcode scheint darauf hinzudeuten .0 und ich kann "Hauptanwendung" nicht zu einer früheren Version von Qt wechseln.

Ich bin neu in Qt und "neue Anwendung." Gibt es einen einfacheren Weg, dies zu erreichen, als ein vollständiges Verständnis von "neuer Anwendung" zu erlangen und dann sowohl das alte deklarative Framework als auch das neue qtquick Framework zu lesen und alles neu zu strukturieren, um das neue qtquick Framework zu verwenden?

Antwort

1

Der Aufwand für die Portierung auf QML2 hängt stark davon ab, wie viele benutzerdefinierte Elemente Sie haben und wie Sie mit der deklarativen Ansicht aus der Hauptanwendung interagieren. In jedem Fall empfehle ich dringend, die Zeit zu verbringen, um den vorhandenen QML-Code zu verstehen, bevor Sie versuchen, ihn zu portieren. Ein Großteil des Portierungscodes besteht oft nur darin, QDeclarative * durch QQuick * zu ersetzen, aber Sie müssen schließlich dem QGraphicsView -> OpenGL-Teil der Portierung gegenüberstellen.

Zum Einbetten einer QML2-Szene in eine QWidget-Anwendung benötigen Sie QQuickWidget.

Ich bin ein bisschen selbst überrascht QtQuick1 ist vollständig entfernt und nicht nur in Qt 5.6 veraltet. Wenn Sie Ihre eigene Toolchain kompilieren und verschicken, sollte die Wiedereinführung des Untermoduls qtquick1 nicht zu viel Aufwand sein, da es in qt5.6 keine größeren Änderungen an der Architektur gibt, die das Funktionieren des Moduls verhindern.

Verwandte Themen