<div dir="ltr"><div><span class="gmail-VIiyi" lang="en"><span class="gmail-JLqJ4b gmail-ChMk0b"><span class="gmail-Q4iAWc">Wrong solution.</span></span></span></div><div><span class="gmail-VIiyi" lang="en"><span class="gmail-JLqJ4b gmail-ChMk0b"><span class="gmail-Q4iAWc"><span class="gmail-VIiyi" lang="en"><span class="gmail-JLqJ4b gmail-ChMk0b"><span class="gmail-Q4iAWc">You need to select QML files for other versions of Qt shared library at run-time, not compile time!<br></span></span></span></span></span></span></div><div><span class="gmail-VIiyi" lang="en"><span class="gmail-JLqJ4b gmail-ChMk0b"><span class="gmail-Q4iAWc"><span class="gmail-VIiyi" lang="en"><span class="gmail-JLqJ4b gmail-ChMk0b"><span class="gmail-Q4iAWc">So, your executable must contain all supported versions <span class="gmail-VIiyi" lang="en"><span class="gmail-JLqJ4b gmail-ChMk0b"><span class="gmail-Q4iAWc">simultaneously.</span></span></span></span></span></span></span></span></span></div><div><span class="gmail-VIiyi" lang="en"><span class="gmail-JLqJ4b gmail-ChMk0b"><span class="gmail-Q4iAWc"><span class="gmail-VIiyi" lang="en"><span class="gmail-JLqJ4b gmail-ChMk0b"><span class="gmail-Q4iAWc">An example of my solution below.</span></span></span></span></span></span></div><div><span class="gmail-VIiyi" lang="en"><span class="gmail-JLqJ4b gmail-ChMk0b"><span class="gmail-Q4iAWc"><span class="gmail-VIiyi" lang="en"><span class="gmail-JLqJ4b gmail-ChMk0b"><span class="gmail-Q4iAWc"><br></span></span></span></span></span></span></div><div><span class="gmail-VIiyi" lang="en"><span class="gmail-JLqJ4b gmail-ChMk0b"><span class="gmail-Q4iAWc"><span class="gmail-VIiyi" lang="en"><span class="gmail-JLqJ4b gmail-ChMk0b"><span class="gmail-Q4iAWc">qml.qrc</span></span></span></span></span></span></div><div><span class="gmail-VIiyi" lang="en"><span class="gmail-JLqJ4b gmail-ChMk0b"><span class="gmail-Q4iAWc"><span class="gmail-VIiyi" lang="en"><span class="gmail-JLqJ4b gmail-ChMk0b"><span class="gmail-Q4iAWc">----------<br></span></span></span></span></span></span></div><div><span class="gmail-VIiyi" lang="en"><span class="gmail-JLqJ4b gmail-ChMk0b"><span class="gmail-Q4iAWc"><span class="gmail-VIiyi" lang="en"><span class="gmail-JLqJ4b gmail-ChMk0b"><span class="gmail-Q4iAWc"></span></span></span></span></span></span></div><div><span class="gmail-VIiyi" lang="en"><span class="gmail-JLqJ4b gmail-ChMk0b"><span class="gmail-Q4iAWc"><span class="gmail-VIiyi" lang="en"><span class="gmail-JLqJ4b gmail-ChMk0b"><span class="gmail-Q4iAWc"><file alias="RegexValidator.qml">qml/RegexValidator.qml</file><br><file alias="+qt6/RegexValidator.qml">qml/+qt6/RegexValidator.qml</file><br></span></span></span></span></span></span></div><div><span class="gmail-VIiyi" lang="en"><span class="gmail-JLqJ4b gmail-ChMk0b"><span class="gmail-Q4iAWc"><span class="gmail-VIiyi" lang="en"><span class="gmail-JLqJ4b gmail-ChMk0b"><span class="gmail-Q4iAWc"><br></span></span></span></span></span></span></div><div><span class="gmail-VIiyi" lang="en"><span class="gmail-JLqJ4b gmail-ChMk0b"><span class="gmail-Q4iAWc"><span class="gmail-VIiyi" lang="en"><span class="gmail-JLqJ4b gmail-ChMk0b"><span class="gmail-Q4iAWc">main.cpp<br></span></span></span></span></span></span></div><div><span class="gmail-VIiyi" lang="en"><span class="gmail-JLqJ4b gmail-ChMk0b"><span class="gmail-Q4iAWc"><span class="gmail-VIiyi" lang="en"><span class="gmail-JLqJ4b gmail-ChMk0b"><span class="gmail-Q4iAWc">------------<br></span></span></span></span></span></span></div>    QQmlApplicationEngine engine;<br>    QVersionNumber qt_ver = QLibraryInfo::version(); // Qt run-time version<br>    if (qt_ver.majorVersion() > 5) {<br>        QStringList efs(QString("qt%1").arg(qt_ver.majorVersion()));<br>#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)<br>        QQmlFileSelector::get(&engine)->setExtraSelectors(efs);<br>#else<br>        engine.setExtraFileSelectors(efs);<br>#endif<br><div>    }</div><div><br></div><div>qml/RegExpValidator.qml</div><div>----------------------------------</div><div>import QtQuick 2.12<br>RegExpValidator {<br>    id: control<br>    property alias regex: control.regExp<br>}</div><div><br></div><div><div>qml/+qt6/RegExpValidator.qml</div><div>----------------------------------------</div><div>import QtQuick.Controls 2.14<br>RegularExpressionValidator {<br>    id: control<br>    property alias regex: control.regularExpression<br>}<br></div><div><br></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">чт, 12 мая 2022 г. в 23:59, Alexander Dyagilev <<a href="mailto:alervdvcw@gmail.com">alervdvcw@gmail.com</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hello,<br>
<br>
I've just created a separate qt5compat folder inside of directory with <br>
my QML code.<br>
<br>
Let's suppose I need to use RectangularGlow component. For this I've <br>
created 3 files:<br>
<br>
1. qt5compat/RectangularGlow.qml with the following contents:<br>
<br>
import QtQuick 2.0<br>
import "./qt5"<br>
import "./qt6"<br>
<br>
RectangularGlow<br>
{<br>
<br>
}<br>
<br>
2. qt5compat/qt5/RectangularGlow.qml with the following contents:<br>
<br>
import QtQuick 2.0<br>
import QtGraphicalEffects 1.0<br>
<br>
RectangularGlow<br>
{<br>
<br>
}<br>
<br>
This file should be included into resource only when compiling using Qt5.<br>
<br>
3. qt5compat/qt6/RectangularGlow.qml with the following contents:<br>
<br>
import QtQuick 2.0<br>
import Qt5Compat.GraphicalEffects<br>
<br>
RectangularGlow<br>
{<br>
<br>
}<br>
<br>
This file should be included into resource only when compiling using Qt6.<br>
<br>
Now, all I need to use RectangularGlow in my QML code is to import my <br>
custom component:<br>
<br>
import "./qt5compat"<br>
<br>
How to conditionally include resources: I've just created 2 separate <br>
files for this my simple qt5compat "library": qmlqt5compat_qt5.qrc and <br>
qmlqt5compat_qt6.qrc. Then, in my .pro file:<br>
<br>
greaterThan(QT_MAJOR_VERSION, 5):RESOURCES += qmlqt5compat_qt6.qrc<br>
lessThan(QT_MAJOR_VERSION, 6):RESOURCES += qmlqt5compat_qt5.qrc<br>
<br>
Hope this helps :)<br>
<br>
<br>
On 4/25/2022 10:41 AM, Александр Иваш wrote:<br>
> I need to migrate a Qt 5 application with QML ui to Qt 6 without<br>
> losing Qt 5 support. What is the best approach here? Version-specific<br>
> resources? File selectors (by the way is it even possible to select<br>
> QML files based on the Qt version?) I mean it is clear that<br>
> platform-specific code/imports needs to be wrapped into<br>
> platform-specific components, but what is the best way to select the<br>
> right component?<br>
> _______________________________________________<br>
> Interest mailing list<br>
> <a href="mailto:Interest@qt-project.org" target="_blank">Interest@qt-project.org</a><br>
> <a href="https://lists.qt-project.org/listinfo/interest" rel="noreferrer" target="_blank">https://lists.qt-project.org/listinfo/interest</a><br>
_______________________________________________<br>
Interest mailing list<br>
<a href="mailto:Interest@qt-project.org" target="_blank">Interest@qt-project.org</a><br>
<a href="https://lists.qt-project.org/listinfo/interest" rel="noreferrer" target="_blank">https://lists.qt-project.org/listinfo/interest</a><br>
</blockquote></div>