[Interest] Support for Qt 5 & Qt 6 in QML app
ulf.hermann at qt.io
Fri May 13 09:40:17 CEST 2022
> 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.
More information about the Interest