Hi,
I need to migrate a Qt 5 application with QML ui to Qt 6 without losing Qt 5 support. What is the best approach here? Version-specific resources? File selectors (by the way is it even possible to select QML files based on the Qt version?) I mean it is clear that platform-specific code/imports needs to be wrapped into platform-specific components, but what is the best way to select the right component?
File selectors are generally not a great idea as we cannot know ahead of time what they will evaluate to at run time. What concrete problems are you facing? Most QML code written for Qt 5 should still work with Qt 6.
You can use qmldir imports to select between different modules based on Qt version. By constructing your qmldir files from the build system you can change what your module imports at compile time. Unfortunately we don't have a good API for defining QML modules in Qt5. The only thing we have there is CONFIG+=qmltypes in qmake. You need to write build system code that generates or copies the qmldir file into place.
qmldir imports have a number of quirks in Qt5. They pretty much only work when the import statement is in a qmldir file of a QML module that also defines some other types. The other types have to be implemented in C++ and there must not be any *.qml files in the same module. In Qt6, qmldir imports are less of a pain.
best regards, Ulf _______________________________________________ Interest mailing list Interest@qt-project.org https://lists.qt-project.org/listinfo/interest