[Interest] Support for Qt 5 & Qt 6 in QML app

Alexander Dyagilev alervdvcw at gmail.com
Thu May 12 22:58:24 CEST 2022


Hello,

I've just created a separate qt5compat folder inside of directory with 
my QML code.

Let's suppose I need to use RectangularGlow component. For this I've 
created 3 files:

1. qt5compat/RectangularGlow.qml with the following contents:

import QtQuick 2.0
import "./qt5"
import "./qt6"

RectangularGlow
{

}

2. qt5compat/qt5/RectangularGlow.qml with the following contents:

import QtQuick 2.0
import QtGraphicalEffects 1.0

RectangularGlow
{

}

This file should be included into resource only when compiling using Qt5.

3. qt5compat/qt6/RectangularGlow.qml with the following contents:

import QtQuick 2.0
import Qt5Compat.GraphicalEffects

RectangularGlow
{

}

This file should be included into resource only when compiling using Qt6.

Now, all I need to use RectangularGlow in my QML code is to import my 
custom component:

import "./qt5compat"

How to conditionally include resources: I've just created 2 separate 
files for this my simple qt5compat "library": qmlqt5compat_qt5.qrc and 
qmlqt5compat_qt6.qrc. Then, in my .pro file:

greaterThan(QT_MAJOR_VERSION, 5):RESOURCES += qmlqt5compat_qt6.qrc
lessThan(QT_MAJOR_VERSION, 6):RESOURCES += qmlqt5compat_qt5.qrc

Hope this helps :)


On 4/25/2022 10:41 AM, Александр Иваш wrote:
> 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?
> _______________________________________________
> Interest mailing list
> Interest at qt-project.org
> https://lists.qt-project.org/listinfo/interest


More information about the Interest mailing list